【发布时间】:2014-04-05 12:10:53
【问题描述】:
我有一个类似于以下的函数,返回大块 xml(在生产环境中), 在应用程序的各个阶段,我们只需要从中检索部分元素或部分属性。
create function testrig.fxConfigurations(@context varchar(300)) returns xml as
begin
return (select
'<configurations realm="configuration">
<context name="apera">
<backends>
<backend name="Hades">
<os>HP Unix</os>
<ip>nnn.nnn.nnn</ip>
<db vender="Oracle" version="11g">
<netconnect>Data Source= (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hades)(PORT = 1521)(RECV_BUF_SIZE=1048576))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = baan)));Password=********;User ID=ItsMe;" providerName="Oracle.DataAccess.Client"
</netconnect>
</db>
</backend>
<backend name="Athena">
<os>HP Unix</os>
<ip>nnn.nnn.nnn</ip>
<db vender="Oracle" version="11g">
<netconnect>Data Source= (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hades)(PORT = 1521)(RECV_BUF_SIZE=1048576))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = baan)));Password=********;User ID=ItsMe;" providerName="Oracle.DataAccess.Client"
</netconnect>
</db>
</backend>
</backends>
</context>
</configurations>
')
end
go
如何像这样使用 xQuery 仅检索属性名称,即“Hades”、“Athena”
select (testrig.fxConfigurations(null).query('configurations/context[@name="apera"]/backends').query('/descendant-or-self::*'))
【问题讨论】:
标签: sql-server xml tsql xquery-sql