在一次调用中执行多个SQL语句

时间:2010-12-08 05:09:45

标签: java database jdbc

我有一个像“UPDATE T SET d=d*2”这样的更新SQL,然后查询更新后的值,例如“SELECT d FROM T”。是否可以使用一个 SQL调用在JDBC中实现它?谢谢!

2 个答案:

答案 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