从db2中的xml中提取节点

时间:2015-02-17 13:15:42

标签: db2 extract

我正在努力如何从具有多个节点的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的任何值

你可以帮忙吗? 谢谢

0 个答案:

没有答案