2011-06-23 22 views
5

Deseo crear un procedimiento almacenado para ser utilizado dentro de un procedimiento almacenado, como se muestra a continuación. es posible?Cómo crear un procedimiento almacenado dentro de otro procedimiento almacenado en SQL Server 2008

CREATE procedure parentSP 
as 

--child SP definition. 
CREATE procedure childSP1 @inputArg varchar(50) 
as 
--do something. 
Go 

--call child sp within parentSP 
execute childSP1 '10' 

Go 
+2

Esto parece un requisito Liks extraño - ¿cuál es tu motivación para hacer esto? –

+0

En respuesta a su pregunta, aunque algunos años después tengo la misma necesidad de crear un procedimiento almacenado dentro de un procedimiento almacenado y el razonamiento es que sigo mi uso de tempdb usando un proceso almacenado personalizado que utiliza la palabra clave de propiedad de archivo que puede solo se usará dentro del contexto actual de la base de datos. Crearé un proceso sub almacenado dentro de tempdb para poder obtener resultados precisos y luego verificar si existe el proceso almacenado. Como tempdb se vuelve a crear cada vez que necesite mantener el código de creación de proc almacenado, no tendrá que volver a crearlo cada vez. –

+0

Una razón para querer hacer esto sería: si desea crear un proceso, función, tipo, etc. temporalmente solo para este procedimiento, y desea eliminarlos todos antes de que el procedimiento finalice. – Ellis

Respuesta

8

Puede utilizar exec:

CREATE procedure parentSP 
as 
exec('CREATE procedure childSP1 @inputArg varchar(50) 
as 
--do something.') 

--call child sp within parentSP 
execute childSP1 '10' 
Go 
+1

Por supuesto, esto producirá un error la segunda vez que se ejecuta, a menos que también elimine el procedimiento más tarde (o ejecute la creación interna si el proceso no existe) –

+0

si crea un proceso de tienda sobre la marcha, debe soltar una vez hecho de usarlo – kheya

Cuestiones relacionadas