xmlデータ型の列に次のサンプルxmlがあります。
<diagnostics CurrentIterationNumber="79" TotalItemsProcessed="37847"
ItemsProcessedLastIteration="75" ItemsProcessedPerIteration="479" />
クエリする属性の名前を渡すことができるストアドプロシージャが必要です。次に、その値を変数に格納して、別の一連の計算を実行します。
.value関数は文字列リテラルを期待していることを読みました。Web上の多くのリソースは、これに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);