Author:水如烟
在我的blog中,专辟了一个专题[资源与数据]来提供一些公用的代码数据,这些代码数据是国标或国家有关部门、或行业发布的,只是我现在手头的或已经提交的,都没有提供出处,或许以后会补充上来。
这些代码数据都以xml方式发表。
如何把这些数据转为需要的行集呢,下面提供两种方法。
已知
DECLARE
@xml xml
, @Info nvarchar ( max )
SET @Info = N '
<!--LzmTW(水如烟) 20080101合同终止原因-->
<row Code="00" Value="其他" />
<row Code="01" Value="期满或约定条件终止" />
<row Code="02" Value="协商一致解除" />
<row Code="03" Value="试用期内" />
<row Code="04" Value="严重违纪" />
<row Code="05" Value="失职舞弊重大损害" />
<row Code="06" Value="追究刑事责任" />
<row Code="07" Value="患除或非因工负伤" />
<row Code="08" Value="不能胜任工作" />
<row Code="09" Value="客观情况重大变化" />
<row Code="10" Value="频临破产经营困难" />
<row Code="11" Value="劳动者提出解除" />
<row Code="12" Value="强迫劳动" />
<row Code="13" Value="未提供报酬或条件" />
'
@xml xml
, @Info nvarchar ( max )
SET @Info = N '
<!--LzmTW(水如烟) 20080101合同终止原因-->
<row Code="00" Value="其他" />
<row Code="01" Value="期满或约定条件终止" />
<row Code="02" Value="协商一致解除" />
<row Code="03" Value="试用期内" />
<row Code="04" Value="严重违纪" />
<row Code="05" Value="失职舞弊重大损害" />
<row Code="06" Value="追究刑事责任" />
<row Code="07" Value="患除或非因工负伤" />
<row Code="08" Value="不能胜任工作" />
<row Code="09" Value="客观情况重大变化" />
<row Code="10" Value="频临破产经营困难" />
<row Code="11" Value="劳动者提出解除" />
<row Code="12" Value="强迫劳动" />
<row Code="13" Value="未提供报酬或条件" />
'
OPENXML
SET
@Info
=
N
'
<root>
'
+
@Info
+
N
'
</root>
'
DECLARE @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @Info
SELECT *
FROM OPENXML( @docHandle , N ' /root/row ' )
WITH ( [ Code ] nchar ( 2 ) ' @Code ' , [ Value ] nvarchar ( 20 ) ' @Value ' )
EXEC sp_xml_removedocument @docHandle
/*
Code Value
---- --------------------
00 其他
01 期满或约定条件终止
02 协商一致解除
03 试用期内
04 严重违纪
05 失职舞弊重大损害
06 追究刑事责任
07 患除或非因工负伤
08 不能胜任工作
09 客观情况重大变化
10 频临破产经营困难
11 劳动者提出解除
12 强迫劳动
13 未提供报酬或条件
(14 行受影响)
*/
DECLARE @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @Info
SELECT *
FROM OPENXML( @docHandle , N ' /root/row ' )
WITH ( [ Code ] nchar ( 2 ) ' @Code ' , [ Value ] nvarchar ( 20 ) ' @Value ' )
EXEC sp_xml_removedocument @docHandle
/*
Code Value
---- --------------------
00 其他
01 期满或约定条件终止
02 协商一致解除
03 试用期内
04 严重违纪
05 失职舞弊重大损害
06 追究刑事责任
07 患除或非因工负伤
08 不能胜任工作
09 客观情况重大变化
10 频临破产经营困难
11 劳动者提出解除
12 强迫劳动
13 未提供报酬或条件
(14 行受影响)
*/
Query
SET
@xml
=
CAST
(N
'
<root>
'
+
@Info
+
N
'
</root>
'
AS
xml)
SELECT
T.c.value(N ' @Code ' , ' nvarchar(2) ' ) AS [ Code ]
,T.c.value(N ' @Value ' , ' nvarchar(10) ' ) AS [ Value ]
FROM @xml .nodes( ' /root/row ' ) T(c)
/*
Code Value
---- ----------
00 其他
01 期满或约定条件终止
02 协商一致解除
03 试用期内
04 严重违纪
05 失职舞弊重大损害
06 追究刑事责任
07 患除或非因工负伤
08 不能胜任工作
09 客观情况重大变化
10 频临破产经营困难
11 劳动者提出解除
12 强迫劳动
13 未提供报酬或条件
(14 行受影响)
*/
SELECT
T.c.value(N ' @Code ' , ' nvarchar(2) ' ) AS [ Code ]
,T.c.value(N ' @Value ' , ' nvarchar(10) ' ) AS [ Value ]
FROM @xml .nodes( ' /root/row ' ) T(c)
/*
Code Value
---- ----------
00 其他
01 期满或约定条件终止
02 协商一致解除
03 试用期内
04 严重违纪
05 失职舞弊重大损害
06 追究刑事责任
07 患除或非因工负伤
08 不能胜任工作
09 客观情况重大变化
10 频临破产经营困难
11 劳动者提出解除
12 强迫劳动
13 未提供报酬或条件
(14 行受影响)
*/