在SQL Server 2008中使用OpenXML命令时没有返回值
这是我设置为在SQL Server 2008中使用OpenXML命令时没有返回值,sql,sql-server-2008-r2,openxml,Sql,Sql Server 2008 R2,Openxml,这是我设置为@XMLSave参数并发送到存储过程的XML参数 <ROOT> <P> <ID>123456789</ID> <Name>admin</Name> </P> <Group> <GroupCardID>14</GroupCardID> </Group> </ROOT> 但当我
@XMLSave
参数并发送到存储过程的XML参数
<ROOT>
<P>
<ID>123456789</ID>
<Name>admin</Name>
</P>
<Group>
<GroupCardID>14</GroupCardID>
</Group>
</ROOT>
但当我选择“值”时,不返回任何值
select *
from OPENXML (@idoc,'/Root/P',2) With(ID int)
试试这个:
DECLARE @XmlParameter XML = '<ROOT>
<P>
<ID>123456789</ID>
<Name>admin</Name>
</P>
<Group>
<GroupCardID>14</GroupCardID>
</Group>
</ROOT>'
SELECT
@XmlParameter.value('(/ROOT/P/ID)[1]', 'int')
DECLARE@XmlParameter='XML'>
123456789
管理
14
'
挑选
@值('(/ROOT/P/ID)[1]',int')
我总是更喜欢原生的XQuery支持,而不是笨重的旧的
OPENXML
东西……我终于找到了答案:
OpenXML参数区分大小写:
我的XML值以“ROOT”开头,openxml参数是“ROOT”谢谢。但这是在旧系统上,我必须解决一些问题,目前无法改变它的结构。是的,我需要。但我正在从事我之前开发的项目。必须通过OPENXML进行修复。
DECLARE @XmlParameter XML = '<ROOT>
<P>
<ID>123456789</ID>
<Name>admin</Name>
</P>
<Group>
<GroupCardID>14</GroupCardID>
</Group>
</ROOT>'
SELECT
@XmlParameter.value('(/ROOT/P/ID)[1]', 'int')