使用Output参数执行存储过程?

我有一个存储过程,我试图testing。 我正试图通过SQL Management Studio来testing它。 为了运行这个testing我input…

exec my_stored_procedure 'param1Value', 'param2Value' 

最后的参数是一个output parameter 。 但是,我不知道如何用输出参数testing存储过程。

如何使用输出参数运行存储过程?

简单的方法是right-click Sql Server Management Studio (SSMS)中的过程,

selectexecute stored procedure...

并根据提示添加input参数的值。

然后, SSMS将生成代码在新的查询窗口中运行proc,并为您执行。 你可以研究生成的代码,看看它是如何完成的。

你可以这样做 :

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

从程序返回val

 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 

检查这个,前两个参数是input参数,第三个参数是过程定义中的输出参数。

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

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

例:

 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 

希望这可以帮助!

过程示例:

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

如何调用这个程序

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

这个怎么样? 这非常简单:

  1. 下面的SPROC具有@ParentProductID的输出参数

  2. 我们要将@ParentProductID的输出值select到下面声明的@MyParentProductID中。

  3. 代码如下:

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

>尝试这个工作正常的多输出参数:

 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 
 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 

首先,声明输出variables:

 DECLARE @MyOutputParameter INT; 

然后,执行存储的过程,你可以做到这一点,没有参数的名字,像这样:

 EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT 

或用参数名称:

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

最后,您可以通过执行SELECT来查看输出结果:

 SELECT @MyOutputParameter