【发布时间】:2014-08-08 16:11:38
【问题描述】:
帮助了解如何从存储过程中返回值,这是一个多值,
需要返回新插入行的Id和Status
这张桌子
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
存储过程工作只需要添加返回插入语句的功能,但前提是完全插入,因为将来不会从临时表中插入所有值
【问题讨论】:
-
ntext、text和image数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)、varchar(max)和varbinary(max)。 See details here -
非常感谢你会记住的
-
如果您传入 XML - 为什么不使用
XML数据类型作为参数?那会更有意义..... -
你知道我刚刚问了别人
标签: sql sql-server xml tsql stored-procedures