检索传递给SQL Server中存储过程的XML数据的问题

时间:2018-04-06 14:31:04

标签: sql sql-server xml stored-procedures

我正在尝试将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

2 个答案:

答案 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)