在 XML 标签中包含 udt:
Include udt: in the XML tag
使用 SQL 查询我需要获取如下数据。
<AcceptanceDateTime>
<udt:DateTimeString formatCode="304">20161207010101Z</udt:DateTimeString>
</AcceptanceDateTime>
我尝试使用下面的 SQL 查询生成它,但它抛出错误
begin tran
SELECT
format( GETDATE(),'yyyyMMddHHmmss') +'Z' as 'udt:DateTimeString'
INTO #tblCDSDeclarationAcceptanceDateTime
SELECT * FROM #tblCDSDeclarationAcceptanceDateTime
SELECT
'304' AS '@formatCode',
Acc.[udt:DateTimeString]
FROM #tblCDSDeclarationAcceptanceDateTime Acc
FOR XML PATH('AcceptanceDateTime'), TYPE
rollback tran
报错如下
Msg 6846, Level 16, State 4, Line 9
XML name space prefix 'udt' declaration is missing for FOR XML column name 'udt:DateTimeString'.
任何人都知道我如何将 "udt:" 作为标签名称。
您需要在查询中添加 "with xmlnamespaces"。试试这个:
begin tran
SELECT
format( GETDATE(),'yyyyMMddHHmmss') +'Z' as 'udt:DateTimeString'
INTO #tblCDSDeclarationAcceptanceDateTime
SELECT * FROM #tblCDSDeclarationAcceptanceDateTime
;WITH XMLNAMESPACES ('udt' as udt)
SELECT
'304' AS '@formatCode',
Acc.[udt:DateTimeString]
FROM #tblCDSDeclarationAcceptanceDateTime Acc
FOR XML PATH('AcceptanceDateTime'), TYPE
rollback tran
首先,
<AcceptanceDateTime>
<udt:DateTimeString formatCode="304">20161207010101Z</udt:DateTimeString>
</AcceptanceDateTime>
无效 xml,因为没有命名空间定义。这就是为什么你得到
XML name space prefix 'udt' declaration is missing for FOR XML column
name 'udt:DateTimeString'.
要提供 xml 命名空间定义,请使用 WITH XMLNAMESPACES 子句。但这里还有更多 - 由于 formatCode
属性嵌入在 udt:DateTime
标记中并且省略了前缀,因此属性也应使用前缀规范。请参阅以下示例:
WITH XMLNAMESPACES('uri' AS udt)
SELECT *
FROM (VALUES (304, format(GETDATE(),'yyyyMMddHHmmss') +'Z')) T([udt:DateTimeString/@formatCode],[udt:DateTimeString])
FOR XML PATH('AcceptanceDateTime')
结果
<AcceptanceDateTime xmlns:udt="uri">
<udt:DateTimeString formatCode="304">20181102094918Z</udt:DateTimeString>
</AcceptanceDateTime>
您需要先定义XMLNAMESPACES
,在本例中它只是udt
;WITH XMLNAMESPACES ('udt' as udt)
SELECT '304' AS '@formatCode',
Acc.[udt:DateTimeString]
FROM #tblCDSDeclarationAcceptanceDateTime Acc
for xml path('AcceptanceDateTime'),type
产生
<AcceptanceDateTime xmlns:udt="udt" formatCode="304">
<udt:DateTimeString>20181102140727Z</udt:DateTimeString>
</AcceptanceDateTime>
使用 SQL 查询我需要获取如下数据。
<AcceptanceDateTime>
<udt:DateTimeString formatCode="304">20161207010101Z</udt:DateTimeString>
</AcceptanceDateTime>
我尝试使用下面的 SQL 查询生成它,但它抛出错误
begin tran
SELECT
format( GETDATE(),'yyyyMMddHHmmss') +'Z' as 'udt:DateTimeString'
INTO #tblCDSDeclarationAcceptanceDateTime
SELECT * FROM #tblCDSDeclarationAcceptanceDateTime
SELECT
'304' AS '@formatCode',
Acc.[udt:DateTimeString]
FROM #tblCDSDeclarationAcceptanceDateTime Acc
FOR XML PATH('AcceptanceDateTime'), TYPE
rollback tran
报错如下
Msg 6846, Level 16, State 4, Line 9
XML name space prefix 'udt' declaration is missing for FOR XML column name 'udt:DateTimeString'.
任何人都知道我如何将 "udt:" 作为标签名称。
您需要在查询中添加 "with xmlnamespaces"。试试这个:
begin tran
SELECT
format( GETDATE(),'yyyyMMddHHmmss') +'Z' as 'udt:DateTimeString'
INTO #tblCDSDeclarationAcceptanceDateTime
SELECT * FROM #tblCDSDeclarationAcceptanceDateTime
;WITH XMLNAMESPACES ('udt' as udt)
SELECT
'304' AS '@formatCode',
Acc.[udt:DateTimeString]
FROM #tblCDSDeclarationAcceptanceDateTime Acc
FOR XML PATH('AcceptanceDateTime'), TYPE
rollback tran
首先,
<AcceptanceDateTime>
<udt:DateTimeString formatCode="304">20161207010101Z</udt:DateTimeString>
</AcceptanceDateTime>
无效 xml,因为没有命名空间定义。这就是为什么你得到
XML name space prefix 'udt' declaration is missing for FOR XML column name 'udt:DateTimeString'.
要提供 xml 命名空间定义,请使用 WITH XMLNAMESPACES 子句。但这里还有更多 - 由于 formatCode
属性嵌入在 udt:DateTime
标记中并且省略了前缀,因此属性也应使用前缀规范。请参阅以下示例:
WITH XMLNAMESPACES('uri' AS udt)
SELECT *
FROM (VALUES (304, format(GETDATE(),'yyyyMMddHHmmss') +'Z')) T([udt:DateTimeString/@formatCode],[udt:DateTimeString])
FOR XML PATH('AcceptanceDateTime')
结果
<AcceptanceDateTime xmlns:udt="uri">
<udt:DateTimeString formatCode="304">20181102094918Z</udt:DateTimeString>
</AcceptanceDateTime>
您需要先定义XMLNAMESPACES
,在本例中它只是udt
;WITH XMLNAMESPACES ('udt' as udt)
SELECT '304' AS '@formatCode',
Acc.[udt:DateTimeString]
FROM #tblCDSDeclarationAcceptanceDateTime Acc
for xml path('AcceptanceDateTime'),type
产生
<AcceptanceDateTime xmlns:udt="udt" formatCode="304">
<udt:DateTimeString>20181102140727Z</udt:DateTimeString>
</AcceptanceDateTime>