1

Techies-- 2 つの行があることはわかっていますが、1 つは 000020 で EMPNO に一致し、もう 1 つは 000030 で一致していますが、空の結果セットが得られます。何か案は?

呼び出しは次のとおりです。

CALL DB2INST1.EMP_MULTIPLE_XML(XMLPARSE(
    DOCUMENT '<EMPLOYEE><EMPNO>000020</EMPNO><EMPNO>000030</EMPNO></EMPLOYEE>'));

変更された sproc は次のとおりです。

   BEGIN

   CREATE PROCEDURE DB2INST1.EMP_MULTIPLE_XML (IN DOC XML)
   DYNAMIC RESULT SETS 1
   READS SQL DATA
   LANGUAGE SQL SPECIFIC EMP_MULTIPLE_XML

   DECLARE CSR1 CURSOR WITH RETURN FOR
    SELECT emp.EMPNO,
           emp.FIRSTNME,
           emp.LASTNAME,
           emp.WORKDEPT
     FROM DB2INST1.EMPLOYEE emp
     WHERE emp.EMPNO IN
      (SELECT X.EMPNO FROM
        XMLTABLE('$d/EMPLOYEE/EMPNO' PASSING DOC AS "d" COLUMNS EMPNO CHAR(6) PATH 'EMPNO') AS X);

 OPEN CSR1;
 END
4

2 に答える 2

0

私の背後にあるこのスレッドをフォローしている人のために、動作する sproc を次に示します。

  CREATE OR REPLACE PROCEDURE test.INPUT_MULTIPLE_XML (IN DOC XML) 
  DYNAMIC RESULT SETS 1  
  LANGUAGE SQL SPECIFIC INPUT_MULTIPLE_XML  
  BEGIN  
     DECLARE CSR1 CURSOR WITH RETURN FOR    
        select t.type,          
               t.tabschema,          
               t.tabname    
         from syscat.tables t,      
          XMLTABLE('$d/tables/tabname' PASSING DOC AS "d" 
          COLUMNS "TABNAME" VARCHAR(128) PATH '.'    ) AS X   
           WHERE X.tabname = t.tabname ;    

  OPEN CSR1;  
  END 
于 2012-09-12T12:27:06.777 に答える