我正在尝试将此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
我无法弄清楚如何解析参数
答案 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
参见:
答案 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
;