Ejecutar procedimiento almacenado con un parámetro de salida?

Tengo un procedimiento almacenado que estoy tratando de probar. Estoy intentando probarlo a través de SQL Management Studio. Para ejecutar esta prueba, ingreso …

exec my_stored_procedure 'param1Value', 'param2Value' 

El parámetro final es un output parameter . Sin embargo, no sé cómo probar un procedimiento almacenado con parámetros de salida.

¿Cómo ejecuto un procedimiento almacenado con un parámetro de salida?

La manera más fácil es hacer right-click en el procedure en Sql Server Management Studio (SSMS),

seleccione execute stored procedure...

y agregue valores para los parámetros de entrada según lo solicitado.

SSMS generará el código para ejecutar el proceso en una nueva ventana de consulta y lo ejecutará por usted. Puedes estudiar el código generado para ver cómo se hace.

Puedes hacerlo :

 declare @rowCount int exec yourStoredProcedureName @outputparameterspOf = @rowCount output 

Retorno val del procedimiento

 ALTER PROCEDURE testme @input VARCHAR(10), @output VARCHAR(20) output AS BEGIN IF @input >= '1' BEGIN SET @output = 'i am back'; RETURN; END END DECLARE @get VARCHAR(20); EXEC testme '1', @get output SELECT @get 

Verifique esto, donde los primeros dos parámetros son parámetros de entrada y el tercero es el parámetro de Salida en la definición del Procedimiento.

 DECLARE @PK_Code INT; EXEC USP_Validate_Login 'ID', 'PWD', @PK_Code OUTPUT SELECT @PK_Code 

Desde http://support.microsoft.com/kb/262499

Ejemplo:

 CREATE PROCEDURE Myproc @parm varchar(10), **@parm1OUT varchar(30) OUTPUT**, **@parm2OUT varchar(30) OUTPUT** AS SELECT @parm1OUT='parm 1' + @parm SELECT @parm2OUT='parm 2' + @parm GO DECLARE @SQLString NVARCHAR(500) DECLARE @ParmDefinition NVARCHAR(500) DECLARE @parmIN VARCHAR(10) DECLARE @parmRET1 VARCHAR(30) DECLARE @parmRET2 VARCHAR(30) SET @parmIN=' returned' SET @SQLString=N'EXEC Myproc @parm, @parm1OUT OUTPUT, @parm2OUT OUTPUT' SET @ParmDefinition=N'@parm varchar(10), @parm1OUT varchar(30) OUTPUT, @parm2OUT varchar(30) OUTPUT' EXECUTE sp_executesql @SQLString, @ParmDefinition, @parm=@parmIN, @parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2" GO DROP PROCEDURE Myproc 

¡Espero que esto ayude!

Ejemplo de procedimiento:

 Create Procedure [dbo].[test] @Name varchar(100), @ID int Output As Begin SELECT @ID = UserID from tbl_UserMaster where Name = @Name Return; END 

Cómo llamar a este procedimiento

 Declare @ID int EXECUTE [dbo].[test] 'Abhishek',@ID OUTPUT PRINT @ID 

¿Qué tal esto? Es extremadamente simplificado:

  1. El SPROC a continuación tiene un parámetro de salida de @ParentProductID

  2. Queremos seleccionar el valor de la salida de @ParentProductID en @MyParentProductID que se declara a continuación.

  3. Aquí está el Código:

     declare @MyParentProductID int exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID output select @MyParentProductID 

> Pruebe esto funciona bien para el parámetro de salida múltiple:

 CREATE PROCEDURE [endicia].[credentialLookup] @accountNumber varchar(20), @login varchar(20) output, @password varchar(50) output AS BEGIN SET NOCOUNT ON; SELECT top 1 @login = [carrierLogin],@password = [carrierPassword] FROM [carrier_account] where carrierLogin = @accountNumber order by clientId, id END Try for the result: SELECT *FROM [carrier_account] DECLARE @login varchar(20),@password varchar(50) exec [endicia].[credentialLookup] '588251',@login OUTPUT,@password OUTPUT SELECT 'login'=@login,'password'=@password 

Primero, declare la variable de salida:

 DECLARE @MyOutputParameter INT; 

Luego, ejecute el procedimiento almacenado, y puede hacerlo sin los nombres de los parámetros, como este:

 EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT 

o con los nombres de los parámetros:

 EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT 

Y finalmente, puede ver el resultado de salida haciendo un SELECT :

 SELECT @MyOutputParameter 
 CREATE PROCEDURE DBO.MY_STORED_PROCEDURE (@PARAM1VALUE INT, @PARAM2VALUE INT, @OUTPARAM VARCHAR(20) OUT) AS BEGIN SELECT * FROM DBO.PARAMTABLENAME WHERE PARAM1VALUE=@PARAM1VALUE END DECLARE @OUTPARAM2 VARCHAR(20) EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT PRINT @OUTPARAM2 

Aquí está el procedimiento almacenado

 create procedure sp1 ( @id as int, @name as nvarchar(20) out ) as begin select @name=name from employee where id=@id end 

Y aquí está la manera de ejecutar el procedimiento

  declare @name1 nvarchar(10) exec sp1 1,@name1 out print @name1