2013-10-04 50 views
1

我的代码在我想在查询中预先定义所需的更改时起作用,但我希望用户提供自己的输入以便他可以根据用户更改任何特定的XML列输入。DB2存储过程通过用户输入更新XML列

我的问题是它给了我错误,它不能识别我已经声明的变量NEWADD。这里是我的代码:

CREATE PROCEDURE MNI_UPDATE_STUD_ADD( in IDNUMBER CHAR(8), 
            in NEWADD  VARCHAR(50)) 

DYNAMIC RESULT SETS 1 

LANGUAGE SQL 

begin 

    UPDATE XML_STUD 
    SET STUDINFO = xmlquery('copy $test := $STUDINFO modify do 
          replace value of $test/Student/Address with NEWADD 
          return $test') 
    WHERE IDNO = IDNUMBER; 

end 

我想的是,用户可以输入任何世界,他希望下可变NEWADD,我与它正在罚款我唯一的问题NEWADD变量的ID号没有问题。有没有办法在xmlquery中调用一个变量?提前致谢。

回答

2

对于完整性我在这里粘贴提供给您elsewhere答案:

您应该引用变量的XMLQUERY字符串类似于其他变量的原因,$STUDINFO$test。使用PASSING子句来定义该变量。

... xmlquery('copy $test := $STUDINFO modify do 
       replace value of $test/Student/Address 
       with $foo return $test' 
       passing NEWADD as "foo" 
)... 
+0

是的,谢谢我已经知道了。但是这将被添加到我的信息收集。 –