Erstellen einer Prozedur im IF-Abschnitt

8

Ich brauche Hilfe mit einfachem SQL-Code:

%Vor%

Der einfache Code oben:
- deklariert eine int-Variable
- überprüft, ob die Prozedur dbo.Table_Exists vorhanden ist - WENN NICHT existiert es erstellt es

Mein Problem ist diese Fehlerinformation:

%Vor%

Ich weiß nicht warum, aber ..
- Wenn ich 'CREATE PROCEDURE' body ausführen allein funktioniert es - Wenn ich den gesamten IF-Abschnitt ausschließe "Create PROCEDURE" ausfühle, funktioniert die einfache Abfrage - Wenn ich den gesamten IF-Abschnitt einschließlich 'CREATE PROCEDURE' austrage, wird der Fehler ausgelöst

Was fehlt mir?

    
qlf00n 10.06.2011, 12:48
quelle

4 Antworten

19

CREATE PROCEDURE muss in einem eigenen Batch sein

Also, dynamisches SQL ist eine Möglichkeit:

%Vor%

oder DROP zuerst

%Vor%

Beachten Sie die Verwendung von OBJECT_ID, um zu sehen, ob der Prozess existiert.

    
gbn 10.06.2011, 12:51
quelle
14

Sie können dies mit SET NOEXEC ON tun. Dies weist SQL Server an, den gesamten SQL-Code zu ignorieren, bis SET NOEXEC OFF erreicht ist.

%Vor%     
Anthony Faull 10.06.2011 13:21
quelle
3

Von MSDN :

  

Die Anweisung CREATE PROCEDURE kann nicht mit anderen Transact-SQL-Anweisungen in einem einzelnen Stapel kombiniert werden.

Daher ist das, was Sie zu tun versuchen, nicht möglich, es sei denn, Sie können es mit einer dynamischen Abfrage implementieren.

    
Andriy M 10.06.2011 12:51
quelle
0
%Vor%

.................

    
mmert 28.10.2016 08:58
quelle

Tags und Links