【发布时间】:2011-10-19 00:38:33
【问题描述】:
在下面的代码中这个语句;
declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd
重复了 6 次,使代码变得非常混乱且难以理解:
SELECT XW_PK, xw_ExeVersion, xw_enterpriseCode, xw_DatabaseCode, xw_CompanyCode,
Poodle.Love.value('declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd";
(pd:action/@name)[1]', 'varchar(100)') Name,
Poodle.Love.value('declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd";
(pd:action/@started)[1]', 'varchar(100)') [Started],
Poodle.Love.value('declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd";
(pd:action/@ended)[1]', 'varchar(100)') [Ended],
Poodle.Love.value('declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd";
(pd:action/@Elapsed)[1]', 'varchar(100)') Elapsed,
Poodle.Love.value('declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd";
(pd:action/@elapsedWithChildren)[1]', 'varchar(100)') elapsedWithChildren
FROM stmusage
CROSS APPLY xw_rawData.nodes('declare namespace pd="http://cargowise.com/ediEnterprise/2011/10/11/systemUsage.xsd";
/pd:performanceMeasurement/pd:action') as Poodle(Love)
我想要做的是只声明一次命名空间并完成它。问题是每个 xqueries 都嵌入在一个字符串中——我不完全确定——但我多年来积累的经验给我的印象是这些字符串不会与每个字符串交互其他任何时间。
【问题讨论】:
标签: sql xml tsql namespaces xquery