Java 在一次调用中执行多个SQL语句
我有一个更新SQL,比如“Java 在一次调用中执行多个SQL语句,java,database,jdbc,Java,Database,Jdbc,我有一个更新SQL,比如“updatet T SET d=d*2”,然后查询更新后的值,比如“SELECT d FROM T”。是否可以使用一个SQL调用在JDBC中实现这一点?谢谢 不,在普通SQL中已经不可能混合DML和SELECT查询,所以JDBC不能为您做任何事情。如果在一个事务中需要,您至少需要触发两个查询。另一种选择是一个存储过程,您可以通过一个单独的命令来执行,但对于这个特定的简单目的来说,它过于复杂了。不,在普通SQL中,混合使用DML和SELECT查询已经不可能了,所以JDBC
updatet T SET d=d*2
”,然后查询更新后的值,比如“SELECT d FROM T
”。是否可以使用一个SQL调用在JDBC中实现这一点?谢谢 不,在普通SQL中已经不可能混合DML和SELECT查询,所以JDBC不能为您做任何事情。如果在一个事务中需要,您至少需要触发两个查询。另一种选择是一个存储过程,您可以通过一个单独的命令来执行,但对于这个特定的简单目的来说,它过于复杂了。不,在普通SQL中,混合使用DML和SELECT查询已经不可能了,所以JDBC不能为您做任何事情。如果在一个事务中需要,您至少需要触发两个查询。另一种方法是一个存储过程,您可以通过一个单独的命令来执行,但对于这个特殊的简单目的来说,它过于复杂了。您可以使用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
您可以使用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数据库的查询。所有这些都很好,除了与Java和JDBC有关的查询,可能是针对非Oracle数据库的查询。