DECLARE CURSOR c_data IS SELECT empno, ename, job, mgr, TO_CHAR(hiredate,'DD-MON-YYYY') AS hiredate, sal, comm, deptno FROM emp ORDER BY ename; v_file UTL_FILE.FILE_TYPE; BEGIN v_file := UTL_FILE.FOPEN(location => 'EXTRACT_DIR', filename => 'emp_csv1.csv', open_mode => 'w', max_linesize => 32767); UTL_FILE.PUT_LINE(v_file, 'empno' || ',' || 'ename' || ',' || 'job' || ',' || 'mgr' || ',' || 'hiredate' || ',' || 'empno' || ',' || 'sal' || ',' || 'comm' || ',' || 'deptno'); FOR cur_rec IN c_data LOOP UTL_FILE.PUT_LINE(v_file, cur_rec.empno || ',' || cur_rec.ename || ',' || cur_rec.job || ',' || cur_rec.mgr || ',' || cur_rec.hiredate || ',' || cur_rec.empno || ',' || cur_rec.sal || ',' || cur_rec.comm || ',' || cur_rec.deptno); END LOOP; UTL_FILE.FCLOSE(v_file); EXCEPTION WHEN OTHERS THEN UTL_FILE.FCLOSE(v_file); RAISE; END; /
