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

EXEC Stored Procedure Output to Variable in Insert Operation

我有以下存储过程:

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, Col2, Col3)VALUES (@Col1, @Col2, @OutputParameter)

请指教。结果的数据类型是 VARCHAR(50).
谢谢。

您需要为第一个过程中的输出参数赋值:

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 ...,输出参数的值也将是 NULL