私は 'UPDATE T SET d=d*2
'のような更新SQLを持っていて、 'SELECT d FROM T
'のような更新された値を照会します。 SQLコールを使用してJDBCでこれを実装できますか?ありがとう!1回の呼び出しで複数のSQL文を実行
1
A
答えて
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
JavaおよびJDBCに関連する問合せ、場合によってはOracle以外のデータベースに関する問合せを除いて、すべて問題ありません。 –