Gespeicherte Prozedur zum Löschen der Tabelle

8

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%     
SSISPissesMeOff 18.05.2011, 14:38
quelle

4 Antworten

9

Sie können sp_execute

verwenden %Vor%

Weitere Informationen erhalten Sie msdn document link

    
maycil 18.05.2011, 14:50
quelle
4
%Vor%     
solycon 03.10.2012 23:24
quelle
2

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.

    
Ash Burlaczenko 18.05.2011 14:46
quelle
2

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.)

    
Andriy M 18.05.2011 17:26
quelle

Tags und Links