2017-11-16 7 views
0

テーブルからいくつかのエントリを削除しようとしている私のSPがエラーを投げています。安全側にあると私はIF EXISTSを持って、その下に私はdelete文を持っているが、私は、構文が正しくない場合はわからない、このエラーにキーワード "DEL"の近くにある誤った構文のエラー

Incorrect syntax near the keyword 'DELETE'.

削除のstmt

IF EXISTS (DELETE FROM myTable WHERE id IN ((SELECT ids FROM @tranId))); 

を取得しています。余分な括弧があるよう

+3

_ _私は、私は、エラーのxD –

+1

あなたを見れば、それはないと確信している「構文が間違っている場合、私はわかりません」 'EXISTS'で' DELETE'を使うことはできません。あなたは 'SELECT'を使わなければなりません。 'EXISTS'は行を返す可能性のあるサブクエリをとり、少なくとも1つの行があれば' TRUE'を返します。 –

+0

IF条件を削除するのが正しいと思っていました。 – David

答えて

6

IFは、不要である:

DELETE FROM ESG.DOCUMENT_SET_TRANS_MDATA 
    WHERE DOCUMENT_SET_TRANS_MDATA.DOCUMENT_SET_TRANSACTION_ID IN (SELECT ids FROM @tranId); 

DELETE FROM ESG.DOCUMENT_TRANSACTION 
    WHERE DOCUMENT_TRANSACTION.DOCUMENT_SET_TRANSACTION_ID IN (SELECT ids FROM @tranId); 

DELETE FROM ESG.DOCUMENT_SET_TRANSACTION 
    WHERE DOCUMENT_SET_TRANSACTION.DOCUMENT_SET_TRANSACTION_ID IN (SELECT ids FROM @tranId); 
+1

正しいですが、IF EXISTSの必要はありません.IF EXISTSが存在しない場合、行が削除されない可能性があり、エラーをスローしません。 – KinSlayerUY

関連する問題