繁体   English   中英

从存储过程中获取第一行第一列的值

[英]Get first row, first column value from stored procedure

我正在调用一个存储过程(我无法修改),它在过程结束时通过SELECT返回单个值。 我需要在自己的程序中使用该值。 我怎样才能得到那个价值?

这是我无法修改的调用过程的示例:

CREATE PROCEDURE [dbo].[SP_poorlywritten] (
....
)
BEGIN
    ....
    SELECT @lastkey;
    RETURN (0);
END

这是我正在尝试做的,但它不起作用,因为它获得了返回值,而我需要的是SELECT值:

exec @next_key = SP_poorlywritten 'tablename',1;

如何存储存储过程中的第一列、第一行值?

如果您不能修改现有的存储过程,您将无法像您希望的那样使用RETURN

另一种方法是将过程的 select 语句的 output 插入临时表,然后直接查询以填充变量。

看起来像这样。

CREATE TABLE #tmp
(
   LastKey INT
)

INSERT INTO #tmp
EXEC [dbo].[SP_poorlywritten]

有关如何完成此操作的更多详细信息,请参阅此现有帖子

正如 Aaron Bertrand 指出的那样, RETURN用于错误/状态。 如果您能够修改存储过程,您会希望使用 output 参数而不是RETURN 这就是你将如何做到的。

CREATE PROCEDURE proc_name
    @Output int OUTPUT
AS
    <do some stuff>

    SET @Output = <some_value>
GO

DECLARE @Output int

EXEC proc_name @Output = @Output

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM