我有一个要测试的存储过程。我试图通过SQL管理工作室测试它。为了运行这个测试,我输入…

exec my_stored_procedure 'param1Value', 'param2Value'

最后一个参数是输出参数。但是,我不知道如何测试带有输出参数的存储过程。

如何运行带有输出参数的存储过程?


当前回答

下面是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())

其他回答

下面是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())
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

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

下面的SPROC有一个输出参数@ParentProductID 我们希望将@ParentProductID的输出值选择为下面声明的@MyParentProductID。 代码如下: 声明@MyParentProductID int exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID输出 选择@MyParentProductID

首先,声明输出变量:

DECLARE @MyOutputParameter INT;

然后,执行存储过程,你可以不带参数名,就像这样:

EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT

或者使用参数名:

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

最后,你可以通过执行SELECT命令查看输出结果:

SELECT @MyOutputParameter 

简单的方法是在Sql Server Management Studio (SSMS)中右键单击该过程,选择“Execute stored procedure…”,并根据提示为输入参数添加值。然后,SSMS将生成代码以在新的查询窗口中运行过程,并为您执行它。您可以研究生成的代码,了解它是如何完成的。