2011-06-01 3 views
1

たとえば、これをoracleで実行したいのですが可能ですか?スクリプト内のOracle 2つのクエリ?出来ますか?

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

+0

はい、sqlplus、以前は言及していない – newAndroidUser

答えて

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> 

を、何も起こりません次回を削除したが、優雅に....を取得する最初の時間は、あなたがここに簡素化のケースを提示したかもしれない、とあなたの本当のニーズはより複雑です。もしそうなら、より現実的なものを反映するために質問を編集してください。

関連する問題