微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EXEC存储过程输出到插入操作中的变量

如何解决EXEC存储过程输出到插入操作中的变量

我有以下存储过程:

Create Procedure spValueInsert
(@Param3 varchar(50) OUTPUT)
AS
BEGIN
     SELECT TOP 1 uID FROM Table2
END

然后在另一个存储过程中,我具有以下语法:

Create Procedure spMainProc
(@Col1 varchar(50),@Col2 varchar(50))
AS
BEGIN
     INSERT INTO TABLE1(Col1,Col2,Col3)VALUES(@Col1,@Col2,XXX)
END

对于Col3,我想添加spValueInsert的结果。我该怎么办?
我正在尝试以下语法,但是它不起作用。

DECLARE @OutputParameter varchar(50),@ReturnValue int
EXEC @ReturnValue = spValueInsert @OutputParameter OUTPUT
INSERT INTO Table1(Col1,Col3)VALUES (@Col1,@OutputParameter)

请告知。结果的数据类型为VARCHAR(50)
谢谢。

解决方法

您需要在第一个过程中为输出参数分配一个值:

   public class SelectParameters
    {
        public string Text { get; set; }
        public string Value {  get; set;}
        public List<string> Units { get; set; } = new List<string>();
    }

请注意,即使没有CREATE PROCEDURE spValueInsert ( @uID varchar(50) OUTPUT ) AS BEGIN SELECT TOP 1 @uID = uID FROM Table2 -- ORDER BY uID END CREATE PROCEDURE spMainProc ( @Col1 varchar(50),@Col2 varchar(50) ) AS BEGIN DECLARE @uID varchar(50),@ReturnValue int EXEC @ReturnValue = spValueInsert @uID OUTPUT IF @ReturnValue <> 0 RETURN @ReturnValue INSERT INTO Table1(Col1,Col2,Col3) VALUES (@Col1,@Col2,@uID) END ,输出参数的值也将是SELECT TOP 1 @uID = uID ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。