我编写了一个存储过程,如下所示(这是一个简化的版本-SP做了很多其他事情,但是这些是关键部分):
CREATE PROCEDURE [dbo].[_uspCustomSP]
AS
BEGIN
CREATE TABLE #custno(custno int)
INSERT INTO #custno
EXEC usp_GetCustomerNo
DECLARE @custnumber nvarchar(5)
SET @custnumber = (SELECT custno FROM #custno)
DROP TABLE #custno-- drop table so fresh each time
END
此SP可以按我的意愿工作。但是,我希望能够在其他存储过程中引用@custnumber的值。有什么方法可以保留@custnumber的值,但又不重新运行usp_GetCustomerNo(因为每次运行时,@ custnumber的值都会改变-我希望能够使用存储在变量中的确切数字。)
编辑:我在下面提出了一个非常有用的建议,建议我包括一个输出参数。我已经考虑过了,但是我不确定如何在不重新运行整个SP的情况下在其他地方(在另一个SP中)引用此输出。
很抱歉,如果我没有提供足够的信息。
非常感谢, 海伦
答案 0 :(得分:2)
您可以让存储过程返回值:
CREATE PROCEDURE [dbo].[_uspCustomSP] (
@custnumber nvarchar(5) OUTPUT
) AS
BEGIN
CREATE TABLE #custno(custno int) ;
INSERT INTO #custno (custno)
EXEC usp_GetCustomerNo;
SELECT @custnumber = custno FROM #custno ;
DROP TABLE #custno-- drop table so fresh each time
END;
话虽如此,我对存储过程有一些评论:
OUTPUT
使用标量函数或usp_GetCustomerNo
参数?INSERT
一起使用。您将调用存储过程为:
声明@custnumber nvarchar(5);
exec sp_executesql _uspCustomSP,
N'@custnumber nvarchar(5) output',
@custnumber=@custnumber output;