1

指定された入力パラメーター「Table_Name」に従って XML ファイルを生成するためのストアド プロシージャを作成しました。

ストアド プロシージャは次のとおりです。

create or replace 
PROCEDURE Export_In_XML11JUNE 
(
   V_TABLE_NAME1 IN varchar2,
   v_FLAG OUT NUMBER
  )
AS
BEGIN
             ----- Export  table data
          DECLARE
            v_file  UTL_FILE.file_type;
            qryCtx DBMS_XMLGEN.ctxHandle;
            result CLOB;
            v_FILENAME varchar2(50);
            xt_data xmltype;
            v_ctx dbms_xmlgen.ctxHandle;
            rc_data sys_refcursor;
            V_TABLE_NAME varchar2(50);
            cnt number :=0;

     BEGIN 
                     V_TABLE_NAME :=trim(UPPER(V_TABLE_NAME1));          
                           v_file := UTL_FILE.fopen('MYXML',V_TABLE_NAME ||'.xml', 'W');

                              OPEN rc_data FOR 
                              'select * FROM '||V_TABLE_NAME||' ORDER BY 1' ;
                                v_ctx := dbms_xmlgen.newContext (rc_data);
                            DBMS_XMLGEN.USEITEMTAGSFORCOLL (v_ctx);

                                  DBMS_XMLGEN.SETNULLHANDLING(v_ctx, 1);
                                   DBMS_XMLGEN.setrowsettag(v_ctx,'root'); 
                                   DBMS_XMLGEN.setrowtag(v_ctx,V_TABLE_NAME );
                                   result:=  DBMS_XMLGEN.getXML(v_ctx);
                                   result := REPLACE( result, '<?xml version="1.0"?>','<?xml version="1.0" encoding="UTF-8" standalone ="yes"?>');
                                   -- DBMS_XMLGEN.RESTARTQUERY (v_ctx);   
                                 --  xt_data := dbms_xmlgen.getXMLType (v_ctx);

                                   dbms_xslprocessor.clob2file( result, 'MYXML', ''||V_TABLE_NAME||'.xml',871);
                                    dbms_xmlgen.closeContext (v_ctx);
                                    v_FLAG := 1;

                            EXCEPTION
                            WHEN OTHERS THEN
                                 DBMS_OUTPUT.PUT_LINE(SQLERRM);
                                 dbms_xmlgen.closeContext (v_ctx);
                                 v_FLAG := 0;


                          END ;

END Export_In_XML11JUNE;

XML を次の形式で返します。

<?xml version="1.0" encoding="UTF-8" standalone ="yes"?>
<root xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
 <AGNCY>
  <AGENCYID>0000</AGENCYID>
  <NAME>ABC</NAME>
  <MARKDELETED>0</MARKDELETED>
 </AGNCY>
 <AGNCY>
....
....

XML出力が必要でした

<?xml version="1.0" encoding="UTF-8" standalone ="yes"?>
<root xsi:noNamespaceSchemaLocation="c:\data\Agency.xsd" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
 <AGNCY>
  <AGENCYID>0000</AGENCYID>
  <NAME>Caltrans</NAME>
  <MARKDELETED>0</MARKDELETED>
 </AGNCY>
 <AGNCY>
....
....
....

ルートタグに xsi:noNamespaceSchemaLocation="c:\data\table_Name.xsd" 行が必要です。

table_Nameストアド プロシージャの入力パラメータを次に示します 。

私は試しましたが、解決策は見つかりませんでした。私を案内してください。

4

0 に答える 0