我有一个要测试的存储过程。我试图通过SQL管理工作室测试它。为了运行这个测试,我输入…
exec my_stored_procedure 'param1Value', 'param2Value'
最后一个参数是输出参数。但是,我不知道如何测试带有输出参数的存储过程。
如何运行带有输出参数的存储过程?
我有一个要测试的存储过程。我试图通过SQL管理工作室测试它。为了运行这个测试,我输入…
exec my_stored_procedure 'param1Value', 'param2Value'
最后一个参数是输出参数。但是,我不知道如何测试带有输出参数的存储过程。
如何运行带有输出参数的存储过程?
当前回答
首先,声明输出变量:
DECLARE @MyOutputParameter INT;
然后,执行存储过程,你可以不带参数名,就像这样:
EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT
或者使用参数名:
EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT
最后,你可以通过执行SELECT命令查看输出结果:
SELECT @MyOutputParameter
其他回答
下面是存储过程
create procedure sp1
(
@id as int,
@name as nvarchar(20) out
)
as
begin
select @name=name from employee where id=@id
end
这是执行这个过程的方法
declare @name1 nvarchar(10)
exec sp1 1,@name1 out
print @name1
试试这个;对于多个输出参数,它工作得很好:
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
这个怎么样?它非常简单:
下面的SPROC有一个输出参数@ParentProductID 我们希望将@ParentProductID的输出值选择为下面声明的@MyParentProductID。 代码如下: 声明@MyParentProductID int exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID输出 选择@MyParentProductID
检查一下,其中前两个参数是输入参数,第三个是Procedure定义中的输出参数。
DECLARE @PK_Code INT;
EXEC USP_Validate_Login 'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code
使用这个查询,你可以执行任何存储过程(带或不带输出参数):
DECLARE @temp varchar(100)
EXEC my_sp
@parameter1 = 1,
@parameter2 = 2,
@parameter3 = @temp output,
@parameter4 = 3,
@parameter5 = 4
PRINT @temp
这里@temp的数据类型应该与存储过程中的@parameter3相同。