SQL插入到选择返回值

时间:2014-08-08 16:11:39

标签: sql sql-server xml tsql stored-procedures

帮助理解如何从存储过程返回值,这是一个多值,

需要返回新插入行的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表中插入所有值

1 个答案:

答案 0 :(得分:3)

使用插入中的output子句。

INSERT INTO mytable 
([id], [name], [tran_status])
OUTPUT INSERTED.[id],
INSERTED.tran_status
SELECT...