Wie erstelle ich eine gespeicherte Prozedur in SQL Server bedingt?

Als Teil meiner integration-Strategie, ich habe ein paar SQL-Skripts, die ausgeführt werden, um die Datenbank zu aktualisieren. Die erste Sache, die alle diese scripts tun ist, um zu sehen, wenn Sie ausführen müssen, z.B.:

if @version <> @expects
    begin
        declare @error varchar(100);
        set @error = 'Invalid version. Your version is ' + convert(varchar, @version) + '. This script expects version ' + convert(varchar, @expects) + '.';
        raiserror(@error, 10, 1);
    end
else
    begin
        ...sql statements here...
    end

Funktioniert Super! Außer wenn ich brauche, um eine gespeicherte Prozedur hinzufügen. Die "create proc" - Befehl muss der einzige Befehl in einem batch von sql-Befehlen. Putting ein "create proc" in meine IF-Anweisung bewirkt, dass dieser Fehler:

'CREATE/ALTER PROZEDUR' muss die erste Anweisung in einem abfragebatch sein. 

Autsch! Wie kann ich die CREATE PROC Befehl in meinem script, und habe es nur ausgeführt, wenn es muss?

InformationsquelleAutor der Frage Josh Hinman | 2008-09-10

Schreibe einen Kommentar