我有一个我创建的存储过程,以便我可以在表中输入行,然后返回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;而不是实际的身份证。