に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>
を、何も起こりません次回を削除したが、優雅に....を取得する最初の時間は、あなたがここに簡素化のケースを提示したかもしれない、とあなたの本当のニーズはより複雑です。もしそうなら、より現実的なものを反映するために質問を編集してください。
出典
2011-06-01 12:21:33
APC
はい、可能ですが、この - SQL * Plusの実装方法についての情報は提供していませんか?他に何か? – symcbean
はい、sqlplus、以前は言及していない – newAndroidUser