我有一个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中逐个遍历子节点?