我在 xml 数据类型的列中有以下示例 xml:
<diagnostics CurrentIterationNumber="79" TotalItemsProcessed="37847"
ItemsProcessedLastIteration="75" ItemsProcessedPerIteration="479" />
我想要一个存储过程,我可以在其中传递要查询的属性名称。然后我想将它的值存储到一个变量中以执行另一组计算。
我已经读到 .value 函数需要一个字符串文字,并且网络上的许多资源建议为此使用 sql:variable() 函数。但是,我留下了返回变量实际内容的代码。
尝试按照以下方式进行操作:
declare @property as varchar(50);
set @property = '@CurrentIterationNumber';
declare @x as xml;
set @x = (select PropertyValues from dbo.tblDiagnosticsSnapshot);
SELECT
t.c.value('sql:variable("@property")', 'varchar(50)')
FROM
@x.nodes('/diagnostics') t(c);