我正在努力如何从具有多个节点的xml中提取节点 这是xml
<DataArea>
<TB001I>
<IOCOD>aaa</IOCOD>
<IODESC>desc</IODESC>
</TB001I>
<TB001I>
<IOCOD>bbb</IOCOD>
<IODESC>desc</IODESC>
</TB001I>
<TB001I>
<IOCOD>ccc</IOCOD>
<IODESC>desc</IODESC>
</TB001I>
</DataArea>
这是我试图创建的SP
CREATE OR REPLACE PROCEDURE TESTSQL
(
IN inpdoc XML,
OUT p2 VARCHAR(30),
OUT p3 VARCHAR(30)
)
LANGUAGE SQL
NO EXTERNAL ACTION
BEGIN
declare i int;
declare z int;
declare p4 varchar(30);
set i = 0;
set z = 1;
while (z = 1) do
set i = i + 1;
SET p2 =
XMLCAST
(
XMLQUERY('$d/DataArea/TB001[1]/cdcod' PASSING inpdoc AS "d")
AS VARCHAR(30)
);
SET p3 =XMLCAST
( XMLQUERY('$d/DataArea/TB001[i]/ccdesc' PASSING inpdoc AS "d")
AS VARCHAR(30)
);
SET p4 =
XMLCAST
(
XMLQUERY('$d/DataArea/TB001[last()]/cdcod' PASSING inpdoc AS "d")
AS VARCHAR(30)
);
SET p5 =
XMLQUERY('for $b in$d/DataArea/TB001 return $b/cdcod' PASSING inpdoc AS "d");
if i = 5 then
set z = 0;
end if;
end while;
END
当我运行SP时,P2和P4都可以,但P3不会返回任何内容 我会为TB001I类型的任何标记创建一个节点,或者在xml中循环并获取IOCOD和IODESC的任何值
你可以帮忙吗? 谢谢