Ich habe eine gespeicherte Prozedur erstellt, die eine Tabelle löscht, wenn sie in einer Datenbank vorhanden ist. Wenn ich die gespeicherte Prozedur mit EXEC ausführe, erhalte ich den folgenden Fehler:
Msg 203, Level 16, State 2, Verfahren sp_DropIfExists, Zeile 13 Der Name 'IF EXISTS (SELECT 1 FROM sys.Objekte WHERE OBJECT_ID = OBJECT_ID (N'Tabellenname ') UND type = (N'U ')) DROP TABLE [Tabellenname] 'ist nicht gültig Identifikator.
Wenn ich jedoch das T-SQL, das in Management Studio generiert wurde, kopiere und einfüge, scheint es gut zu laufen. Kann jemand erklären, warum das nicht zutrifft? Die Reparatur wäre nett, aber ich bin wirklich hinter dem Warum in erster Linie, aber wie wäre es schön zu sein! Danke im Voraus.
%Vor% Sie können sp_execute
Weitere Informationen erhalten Sie msdn document link
Nicht sicher, ob dies Ihre Probleme lösen wird, aber Sie würden besser platzieren Sie überprüfen, ist eine Funktion wie folgt
%Vor%Dann können Sie es wie folgt verwenden.
%Vor%Versuchen Sie dies und lassen Sie mich wissen, wenn Sie immer noch den gleichen Fehler erhalten.
EXEC @SQL
sollte EXEC (@SQL)
sein. (Aber @ Maycil Vorschlag ist auch richtig.)
Ohne die Klammern% co_de wird der Wert von% als Name einer gespeicherten Prozedur interpretiert, nicht als Skript. (Ich wusste das vorher nicht, aber ich habe einen kleinen Test gemacht, um zu bestätigen, dass es tatsächlich so ist.)
Tags und Links sql stored-procedures tsql