PROCEDURE PRC_WRITE_FILE (P_QUERY IN VARCHAR2, --SQL QUERY STATEMENT
P_TABLE_NAME IN VARCHAR2, --TABLE NAME
P_MAX_LINESIZE IN NUMBER DEFAULT 32000 )IS --MAX LINESIZE,MUST LESS THAN 32787
l_OUTPUT UTL_FILE.FILE_TYPE;
l_THECURSOR INTEGER DEFAULT DBMS_SQL.OPEN_CURSOR;
l_COLUMNVALUE VARCHAR2(4000);
l_STATUS INTEGER;
l_COLCNT NUMBER := 0;
l_SEPARATOR VARCHAR2(1);
l_DESCTBL DBMS_SQL.DESC_TAB;
BEGIN
--OPEN FILE
l_OUTPUT := UTL_FILE.FOPEN( 'HSM_BUCKUP_CSV_DIR',P_TABLE_NAME || '_' || SUBSTR(TO_CHAR(SYSDATE, 'YYYYMMDD'),0,6) || '.csv', 'W', P_MAX_LINESIZE);
--DEFINE DATE FORMAT
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY/MM/DD HH24:MI:SS''';
--OPEN CURSOR
DBMS_SQL.PARSE(L_THECURSOR, P_QUERY, DBMS_SQL.N