【发布时间】:2016-12-07 23:43:05
【问题描述】:
我有一个 XML 字段,我知道其中至少有一个“ChildNode”,但可能更多。我正在尝试在 T-SQL 中创建一个循环,它将每个 ChildNode 的 XML 作为 VarChar(1000) 并用它做一些逻辑。当我尝试以下...
...
SET @intIterator=1
SET @strValue = (SELECT XMLField.value('(/RootNode/ParentNode/ChildNode)[' + CAST(@intIterator AS VARCHAR(2)) + ']', VARCHAR(1000)) WHERE PrimaryKeyField=@intID)
WHILE LEN(@strValue) > 0
BEGIN
--LOGIC with @strValue not shown.
@intIterator = @intIterator + 1
@strValue = (SELECT XMLField.value('(/RootNode/ParentNode/ChildNode)[' + CAST(@intIterator AS VARCHAR(2)) + ']', VARCHAR(1000)) WHERE PrimaryKeyField=@intID)
END
我收到以下错误: xml数据类型方法“value”的参数1必须是字符串字面量。
我知道当我尝试在 value 方法中使用 @intIterator 时它会爆炸,因为它需要字符串文字而不是变量,但是如何在 T-SQL 中逐个遍历子节点?
【问题讨论】:
标签: tsql