1

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

4

1 回答 1

2

为了完整起见,我在此处粘贴在其他地方提供给您的答案:

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

... xmlquery('copy $test := $STUDINFO modify do
                replace value of $test/Student/Address 
                with $foo return $test'
                passing NEWADD as "foo"
)...
于 2013-10-04T14:20:48.797 回答