例如我想在oracle上运行它是否有可能?
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中执行此操作
答案 0 :(得分:2)
可以轻松地将所呈现的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>
当然,您可能在这里提出了一个简化的案例,您的实际需求更加复杂。如果是这样,请编辑您的问题以反映更真实的内容。