Oracle脚本中的两个查询?可能吗?

时间:2011-06-01 11:55:11

标签: oracle

例如我想在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中执行此操作

1 个答案:

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

当然,您可能在这里提出了一个简化的案例,您的实际需求更加复杂。如果是这样,请编辑您的问题以反映更真实的内容。