oracle 写 xml

  PROCEDURE PRO_CREATE_BUDGET_XML IS
    V_OUT_FILE    UTL_FILE.FILE_TYPE;
    V_FILE_NAME   VARCHAR2(500);
    V_FILE_PATH   VARCHAR2(500);
    V_OPEN_TYPE   VARCHAR2(500);
    V_FILE_EXIST  BOOLEAN;
    V_FILE_LENGHT NUMBER(10, 2);
    V_BLOCK_SIZE  BINARY_INTEGER;
    V_DOC         DBMS_XMLDOM.DOMDocument;
    V_NODE        DBMS_XMLDOM.DOMNode;
    V_XMLDATA     xmltype;
    V_BUFFER      VARCHAR2(30000);
    buffer_item   varchar2(30000);
    CURSOR CS_XMLCUR IS
    /*      select XMLELEMENT("BUDGET_INFO",
                                    XMLFOREST(B.STATE,
                                              B.BUDGET_CODE,
                                              B.PUR_PRO_ID,
                                              B.PUR_PRO_CODE,
                                              B.PUR_PRO_NAME,
                                              B.INDEX_FILE_CODE,
                                              B.ORG_CODE,
                                              B.BUDGET_TOTAL_AMOUNT,
                                              B.PROJECT_TYPE,
                                              B.GOODS_TYPE,
                                              B.SERVICE_TYPE,
                                              B.GPMS_YEAR,
                                              B.PAY_KIND,
                                              B.BUDGET_SOURDE,
                                              B.FUND_TYPE,
                                              B.SECURITY_LEVEL_TYPE,
                                              B.BUDGET_TYPE,
                                              B.FUNCTION_SUBJECT,
                                              B.ECONOMY_SUBJECT,
                                              B.INCOME_SUBJECT,
                                              B.BUDGET_SUBTYPE,
                                              B.USABLE_AMOUNT,
                                              B.DATA_SIGN,
                                              B.PUR_UNIT_ID,
                                              B.IS_IMPORT,
                                              B.BUG_RAL_TREE_CODE,
                                              B.GOV_PUR_TOTAL_AMOUNT,
                                              B.USABLE_PROJECT_TYPE,
                                              B.USABLE_GOODS_TYPE,
                                              B.USABLE_SERVICE_TYPE))
                    from budget_info_del B;*/
      select B.STATE || B.BUDGET_CODE || B.PUR_PRO_ID || B.PUR_PRO_CODE ||
             B.PUR_PRO_NAME || B.INDEX_FILE_CODE || B.ORG_CODE ||
             B.BUDGET_TOTAL_AMOUNT || B.PROJECT_TYPE || B.GOODS_TYPE ||
             B.SERVICE_TYPE || B.GPMS_YEAR || B.PAY_KIND || B.BUDGET_SOURDE ||
             B.FUND_TYPE || B.SECURITY_LEVEL_TYPE || B.BUDGET_TYPE ||
             B.FUNCTION_SUBJECT || B.ECONOMY_SUBJECT || B.INCOME_SUBJECT ||
             B.BUDGET_SUBTYPE || B.USABLE_AMOUNT || B.DATA_SIGN ||
             B.PUR_UNIT_ID || B.IS_IMPORT || B.BUG_RAL_TREE_CODE ||
             B.GOV_PUR_TOTAL_AMOUNT || B.USABLE_PROJECT_TYPE ||
             B.USABLE_GOODS_TYPE || B.USABLE_SERVICE_TYPE
        from budget_info_del B;
  BEGIN
    V_DOC       := xmldom.newDOMDocument;
    V_FILE_NAME := 'BUDGET_INFO_' || TO_CHAR(sysdate, 'YYYYMMDDHH24MISS') ||
                   '.xml';
    V_FILE_PATH := 'UTL_FILE_DIR';
    UTL_FILE.fgetattr(V_FILE_PATH,
                      V_FILE_NAME,
                      V_FILE_EXIST,
                      V_FILE_LENGHT,
                      V_BLOCK_SIZE);
    V_OUT_FILE := UTL_FILE.FOPEN(V_FILE_PATH, V_FILE_NAME, 'w');
    IF UTL_FILE.IS_OPEN(V_OUT_FILE) THEN
      /*      UTL_FILE.put_line(V_OUT_FILE,
                        '<?xml version="1.0" encoding="gb2312"?>');
      UTL_FILE.put_line(V_OUT_FILE,
                        '<DATASET xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">');
      UTL_FILE.put_line(V_OUT_FILE, '<HEADER>');
      UTL_FILE.put_line(V_OUT_FILE, '<VERSION>1.0</VERSION>');
      UTL_FILE.put_line(V_OUT_FILE,
                        '<FILE_NAME>' || V_FILE_NAME || '</FILE_NAME>');
      UTL_FILE.put_line(V_OUT_FILE, '<TYPE>12</TYPE>');
      UTL_FILE.put_line(V_OUT_FILE, '</HEADER>');
      UTL_FILE.put_line(V_OUT_FILE, '<BODY>');
      UTL_FILE.put_line(V_OUT_FILE, '<BUDGET_INFO_SET>');*/
      open CS_XMLCUR;
      /*      loop
        fetch CS_XMLCUR
          into V_XMLDATA;
        EXIT WHEN CS_XMLCUR%NOTFOUND;
        V_DOC  := DBMS_XMLDOM.newDOMDocument(V_XMLDATA);
        V_NODE := DBMS_XMLDOM.makeNode(V_DOC);
        DBMS_XMLDOM.writeToBuffer(V_NODE, buffer_item);
        UTL_FILE.put_line(V_OUT_FILE, buffer_item);
      end loop;*/
      loop
        fetch CS_XMLCUR
          into V_BUFFER;
        EXIT WHEN CS_XMLCUR%NOTFOUND;
        UTL_FILE.put_line(V_OUT_FILE, V_BUFFER);
      end loop;
      close CS_XMLCUR;
    END IF;
    /*    UTL_FILE.put_line(V_OUT_FILE, '</BUDGET_INFO_SET>');
    UTL_FILE.put_line(V_OUT_FILE, '</BODY>');
    UTL_FILE.put_line(V_OUT_FILE, '</DATASET>');*/
    UTL_FILE.FCLOSE(V_OUT_FILE);
  END;

猜你喜欢

转载自anole1982.iteye.com/blog/1828598