0

我正在尝试将此 XML 字符串转换为选择

我有@Schedule XML = '<days><day enabled="0">0</day><day enabled="1">1</day><day enabled="1">2</day>< day enabled="1">3</day><day enabled="1">4</day><day enabled="1">5</day><day enabled="0">6</day ></天>'

最后我想看到的是..

DayNumber DayEnabled
0 0
1 1
2 1
3 1
4 1
5 1
6 0

我尝试了几种方法,到目前为止没有任何工作正常..我将其作为 XML 数据类型处理,我不想使用函数,因为这将只是在存储过程中..

更新:也许我没有正确解释..我有一个存储过程,XML是传递给它的参数之一,我需要将它发送到要插入的表中,所以我正在尝试执行以下操作。 .

插入 tblDays (DayNumber, DayEnabled)
SELECT @XMLParsedOrTempTableWithResults

我只是不知道如何解析参数

4

2 回答 2

1
DECLARE @myXML as XML = '<days><day enabled="0">0</day><day enabled="1">1</day><day      enabled="1">2</day><day enabled="1">3</day><day enabled="1">4</day><day enabled="1">5</day><day enabled="0">6</day></days>'

DECLARE @XMLDataTable table
(
DayNumber int
,DayEnabled int
)

INSERT INTO @XMLDataTable
SELECT d.value('text()[1]','int') AS [DayNumber]
,d.value('(@enabled)[1]','int') AS [DayEnabled]
FROM @myXML.nodes('/days/*') ds(d)

SELECT * FROM @XMLDataTable

参考:

http://beyondrelational.com/modules/2/blogs/28/posts/10279/xquery-labs-a-collection-of-xquery-sample-scripts.aspx

于 2012-06-15T18:23:06.377 回答
0

XMLTABLE 函数是大多数支持 XML 的 DBMS 将 XML 文档分解为关系结果集的方式。

此示例使用 DB2 的 XMLTABLE 语法和传递到存储过程的输入参数:

INSERT INTO tblDays (DayNumber, DayEnabled)
SELECT X.* FROM 
    XMLTABLE ('$d/days/day' PASSING XMLPARSE( DOCUMENT SPinputParm ) as "d" 
        COLUMNS 
           dayNumber  INTEGER  PATH '.',
           dayEnabled SMALLINT PATH '@enabled'
    ) AS X
;
于 2012-06-15T17:48:04.977 回答