Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
脚本中的Oracle两个查询?可能吗?_Oracle - Fatal编程技术网

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

脚本中的Oracle两个查询?可能吗?,oracle,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查询?对不起,我是甲骨文的新手 要在SQLPLUS中实现这一点,可以很容易地将SQL压缩为单个DELE

例如,我想在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查询?对不起,我是甲骨文的新手


要在SQLPLUS中实现这一点,可以很容易地将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> 


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

是的,这是可能的,但您尚未提供有关如何实现此功能的任何信息-sql*plus?还有什么吗?是的,sqlplus,很抱歉之前没有提到