我正在尝试将XML字符串传递给存储过程,我无法从XML检索值并插入临时表。我在下面给出了我的存储过程。任何人都可以建议可以做些什么?
存储过程:
CREATE PROCEDURE PROC_InsertTaskRequest_dummy --'<PR><ID>6</ID><ID>7</ID></PR>'
@ProofReaders XML
AS
/*
@ProofReaders : <PR>
<ID>6</ID>
<ID>7</ID>
</PR>
*/
BEGIN
DECLARE @PRTable TABLE(Id int)
INSERT INTO @PRTable
SELECT Tbl.Col.value('@ID', 'int')
FROM @ProofReaders.nodes('//PR') Tbl(Col)
SELECT * FROM @PRTable
END
答案 0 :(得分:1)
也许是这样的
示例强>
Declare @XML xml = '<PR><ID>6</ID><ID>7</ID></PR>'
Select ID = x.n.value('.','int')
From @Xml.nodes('PR/ID') x(n)
<强>返回强>
ID
6
7
答案 1 :(得分:0)
我相信你所遵循的语法是:
DECLARE @ProofReaders xml = '<PR><ID>6</ID><ID>7</ID></PR>';
SELECT PR.ID.value('(text())[1]','int') AS ID
FROM @ProofReaders.nodes('PR/ID') PR(ID)
SQL Server文档确实记录了value()
的使用情况。如果你遇到困难,他们应该是你的第一个电话:value() Method (xml Data Type)