¿Cómo creo condicionalmente un procedimiento almacenado en SQL Server?

Como parte de mi estrategia de integración, tengo algunos scripts SQL que se ejecutan para actualizar la base de datos. Lo primero que hacen todos estos scripts es verificar si necesitan ejecutarse, por ejemplo

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

¡Funciona genial! Excepto si necesito agregar un procedimiento almacenado. El comando "crear proc" debe ser el único comando en un lote de comandos sql. Poner un "crear proceso" en mi declaración IF causa este error:

'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.

¡Ay! ¿Cómo pongo el comando CREATE PROC en mi script y hago que se ejecute solo si es necesario?

Respuestas a la pregunta(10)

Su respuesta a la pregunta