SQL - 将输出返回到存储过程

时间:2016-05-09 11:26:24

标签: sql-server tsql stored-procedures

我有一个我创建的存储过程,以便我可以在表中输入行,然后返回INSERTED.ID,这样我就可以将此ID返回给发送它的SQL命令,以便将ID输入该表。

之前我使用过OUTPUT INSTEAD.ID,当我这样做只是一个插入语句时这很好用,但是如何用存储过程得到相同的结果。

我已经完成了以下操作,但似乎无法正确输出。

CREATE PROCEDURE sp_XStream_Send
-- Add the parameters for the stored procedure here
@Dept VARCHAR(30),
@Process VARCHAR,
@RequestDT DATETIME,
@RequestType VARCHAR,
@RequestBranch INT,
@RequestPolRef VARCHAR,
@RequestXML VARCHAR,
@ReturnID INT OUTPUT    
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO dbo.XStream_Log
        ( Department ,
          Process ,
          RequestDT ,
          RequestType ,
          RequestBranch ,
          RequestPolicyRef ,
          RequestXML 
        )
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES  ( @Dept,
@Process,
@RequestDT,
@RequestType,
@RequestBranch,
@RequestPolRef,
@RequestXML
        )


SELECT @ReturnID = ID FROM @OutputTbl

RETURN

END
GO

当我执行EXEC时,它希望我发送@ReturnID,但我不想输入任何内容,我想要插入ID的输出。

任何帮助,欢呼。

更新

我正在执行我的存储过程:

DECLARE @ID INT;
EXEC dbo.sp_XStream_Send @Dept = 'IT', -- varchar(1)
@Process = 'XStream Test', -- varchar(1)
@RequestDT = '2016-05-09 09:28:38', -- datetime
@RequestType = 'create-broomsrisk', -- varchar(1)
@RequestBranch = 0, -- int
@RequestPolRef = 'POMS01PC01', -- varchar(1)
@RequestXML = '<TestXML></TestXML>', -- varchar(1)
@ReturnID = @ID OUTPUT;

我刚刚成功完成了命令,并且#39;而不是实际的身份证。

0 个答案:

没有答案