2017-11-16 2 views
0

Mein SP wirft Fehler, wo ich versuche, einige Einträge aus den Tabellen zu löschen. Um in sicheren Seite bekam ich IF EXISTS und unter ihm habe ich die Delete-Anweisung, aber ich bin immer diese FehlermeldungFehler in der Syntax in der Nähe des Schlüsselwortes 'Löschen' in SP

Incorrect syntax near the keyword 'DELETE'.

löschen Anw

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

Ich bin nicht sicher, ob die Syntax falsch ist.

+3

_ „Ich bin nicht sicher, ob die Syntax falsch ist“ _ Ich bin sicher, dass dies nicht der Fall, wenn ich auf den Fehler suchen xD –

+1

Sie kann 'DELETE' nicht in' EXISTS' verwenden, müssen Sie 'SELECT' verwenden. 'EXISTS' nimmt eine Unterabfrage, die Zeilen zurückgeben kann, wenn es mindestens eine Zeile gibt, dann gibt sie' TRUE' zurück. –

+0

Ich dachte auch, ob es richtig ist, innerhalb IF-Bedingung zu löschen. – David

Antwort

6

Die IF ist nicht erforderlich, da die zusätzlichen Klammern:

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

Korrekt, es gibt keine Notwendigkeit für IF EXISTS, da die Zeilen nicht gelöscht werden, wenn sie nicht vorhanden sind und kein Fehler ausgegeben wird. – KinSlayerUY

Verwandte Themen