帮助理解如何从存储过程返回值,这是一个多值,
需要返回新插入行的ID和状态
这张表
create table mytable
(
id UNIQUEIDENTIFIER,
name NVARCHAR(255),
tran_status NVARCHAR(255)
);
这段存储过程
ALTER PROCEDURE UpdateByXml
(
@XML ntext
)
AS
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @XML
BEGIN
DECLARE @t TABLE(
[Name] NVARCHAR(255) NOT NULL,
[tran_status] NVARCHAR(255) NOT NULL
)
INSERT @t
SELECT * FROM OPENXML(@idoc, '//item', 1)
WITH (
[Name] NVARCHAR(255) '@Name'
, [tran_status] NVARCHAR(255) '@tran_status'
) a
INSERT INTO mytable ([id], [name], [tran_status])
SELECT
NEWID()
,t.Name
,t.tran_status
FROM @t t
END
存储过程正常工作只需要添加返回插入语句的功能,但只有在完全插入的情况下,因为将来不会从temp表中插入所有值
答案 0 :(得分:3)
使用插入中的output子句。
INSERT INTO mytable
([id], [name], [tran_status])
OUTPUT INSERTED.[id],
INSERTED.tran_status
SELECT...