我有一个要测试的存储过程。我试图通过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

下面是stored_proc的定义:

create proc product(@a int,@b int)
as
return @a * @b

这是从Python中执行的: Conn = pyodbc.connect('…') Cursor = conn.cursor()

sql = """
SET NOCOUNT ON
declare @r float
exec @r=dbo.product 5,4
select @r
"""
result = cursor.execute(sql)
print (result.fetchall())

检查一下,其中前两个参数是输入参数,第三个是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相同。

你可以这样做:

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