Oracle два запроса в скрипте? Является ли это возможным? - PullRequest
1 голос
/ 01 июня 2011

Например, я хочу запустить это на оракуле, возможно ли это?

ACCEPT num PROMPT 'enter num: ' SELECT a.tbl1 FROM tbl1 a, tbl2 b WHERE a.id
= b.id AND a.num = '&num';

Если есть результат, перейдите ко второму запросу

DELETE FROM tbl1 WHERE num = '&num';

Можно ли выполнить 2 запросав скрипте?Извините, я новичок в Oracle.

Хотите сделать это в SQLPLUS

1 Ответ

2 голосов
/ 01 июня 2011

SQL в представленном виде можно легко сжать в один оператор DELETE.Это связано с тем, что инструкция DELETE не создает исключение, когда не находит строк для удаления.

Учитывая данные этого теста:

SQL> select * from tbl1
  2  /

        ID        NUM
---------- ----------
        10        999
        20        999
        10        888

SQL> select * from tbl2
  2  /

        ID
----------
        10


SQL> 

Мы передаем одно и то же значение дважды;в первый раз, когда запись будет удалена, в следующий раз ничего не произойдет, но изящно ....

SQL> DELETE FROM tbl1 a
  2  WHERE a.num = '&num'
  3  and exists (select b.id
  4              from tbl2 b
  5              WHERE a.id = b.id )
  6  /
Enter value for num: 999
old   2: WHERE a.num = '&num'
new   2: WHERE a.num = '999'

1 row deleted.

SQL> /
Enter value for num: 999
old   2: WHERE a.num = '&num'
new   2: WHERE a.num = '999'

0 rows deleted.

SQL> 

Конечно, вы могли представить упрощенный случай здесь, и ваши реальные потребностисложно.Если да, пожалуйста, отредактируйте ваш вопрос, чтобы отразить что-то более реалистичное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...