我有一个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必须是字符串文字.
我知道当我尝试在值方法中使用@intIterator时它正在爆炸,因为它需要字符串文字而不是变量,但是如何在T-sql中逐个遍历子节点?