2010-12-08 45 views

答えて

2

いいえ、SELECTクエリとDMLを混在させることは、プレーンなSQLではすでに使用できません。したがって、JDBCはそれほど多くのことを行うことはできません。必要であれば、単一のトランザクションで少なくとも2つのクエリを実行する必要があります。 1つの代替方法として、CallableStatementを1つだけ実行できるストアドプロシージャがありますが、これはこの単純な目的のために複雑すぎます。

-1

OracleのRETURNING INTO句を使用して、結果をpl/sqlの変数に取り込むことができます。 pl/sqlの中ではこのようなものですが、単純なSQLを使用して同じ結果を達成することは不可能かもしれません。

ところで、どのデータベースを使用していますか?

SQL> declare 
    2  l_empno number := 7369; 
    3  l_sal_initial number; 
    4  l_sal_updated number; 
    5 begin 
    6  select sal 
    7  into l_sal_initial 
    8  from emp 
    9  where empno= l_empno; 
10  dbms_output.put_line('initial sal is.. ' || l_sal_initial); 
11 
12  update emp 
13   set sal = sal*2 
14   where empno = l_empno 
15   returning sal into l_sal_updated; 
16 
17  dbms_output.put_line('final sal is ...' || l_sal_updated); 
18 
19  rollback; 
20 end; 
21/

PL/SQL procedure successfully completed. 

SQL> set serveroutput on; 
SQL>/
initial sal is.. 800 
final sal is ...1600 
+0

JavaおよびJDBCに関連する問合せ、場合によってはOracle以外のデータベースに関する問合せを除いて、すべて問題ありません。 –

関連する問題