Выполнить несколько операторов SQL за один вызов - PullRequest
1 голос
/ 08 декабря 2010

У меня есть обновленный SQL, такой как ‘UPDATE T SET d=d*2’, затем запросите обновленное значение, например ‘SELECT d FROM T’. Можно ли использовать один вызов SQL для реализации этого в JDBC? Спасибо!

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

Нет, смешивание DML с запросами SELECT уже невозможно в простом SQL, поэтому JDBC мало что может сделать для вас.Вам необходимо запустить как минимум два запроса, если это необходимо в одной транзакции.Альтернативой является хранимая процедура, которую затем можно выполнить одним CallableStatement, но она слишком сложна для этой конкретной простой цели.

0 голосов
/ 08 декабря 2010

Вы можете использовать предложение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...