DB2存储过程通过用户输入更新XML列

时间:2013-10-04 10:17:02

标签: xml stored-procedures 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下输入他想要的任何世界,我对变量IDNUMBER没有任何问题它工作正常我唯一的问题是NEWADD。有没有办法在xmlquery中调用变量?提前谢谢。

1 个答案:

答案 0 :(得分: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"
)...