将XML转换为选择

时间:2012-06-15 17:44:59

标签: sql xml

我正在尝试将此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>< / days>'

我最终想要看到的是......

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

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

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

INSERT INTO tblDays(DayNumber,DayEnabled)
SELECT @XMLParsedOrTempTableWithResults

我无法弄清楚如何解析参数

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
;