使用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
这个怎么样? 这非常简单:
-
下面的SPROC具有
@ParentProductID
的输出参数 -
我们要将
@ParentProductID
的输出值select到下面声明的@MyParentProductID
中。 -
代码如下:
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