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;