2011-06-01 22 views
1

例如我想在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

+0

是的它可能 - 但你沒有提供任何關於你如何實現這一點的信息 - sql * plus?還有別的嗎? – symcbean 2011-06-01 12:06:17

+0

是的,sqlplus,對不起,先不提 – newAndroidUser 2011-06-01 12:07:41

回答

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> 

當然,你可以在這裏提出一個簡化的情況下,你的真正需求更加複雜。如果是這樣,請編輯你的問題,以反映更真實的東西。