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

DB2存储过程通过用户输入更新XML列,xml,stored-procedures,db2,Xml,Stored Procedures,Db2,如果我在查询中预先定义所需的更改,但我希望用户提供自己的输入,以便他可以根据用户输入更改任何特定的XML列,那么我的代码就可以工作 我的问题是它给了我错误,并且它没有识别我声明的变量NEWADD。这是我的密码: CREATE PROCEDURE MNI_UPDATE_STUD_ADD( in IDNUMBER CHAR(8), in NEWADD VARCHAR(50)) DYNAMIC RESUL

如果我在查询中预先定义所需的更改,但我希望用户提供自己的输入,以便他可以根据用户输入更改任何特定的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中调用变量?提前感谢。

为了完整起见,我将提供给您的答案粘贴在这里:

您应该参考XMLQUERY字符串中的变量,类似于其中的其他变量,
$STUDINFO
$test
。使用
PASSING
子句定义该变量

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

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