我有一个像“UPDATE T SET d=d*2
”这样的更新SQL,然后查询更新后的值,例如“SELECT d FROM T
”。是否可以使用一个 SQL调用在JDBC中实现它?谢谢!
答案 0 :(得分:2)
不,在纯SQL中已经无法将DML与SELECT查询混合使用,因此JDBC无法为您做任何事情。如果需要,您需要在单个事务中触发至少两个查询。另一种方法是存储过程,然后您可以通过单个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