Я попытался создать файл CSV с помощью PLSQL, и все получилось. Я хочу знать, как включить заголовок для каждого столбца.
Код;
CREATE OR REPLACE PROCEDURE EMP_CSV_EX AS
CURSOR c_data IS
SELECT a.empno,
a.ename,
a.job,
a.mgr,
TO_CHAR(a.hiredate,'DD-MON-YYYY') AS hiredate,
a.sal,
a.comm,
b.deptno
FROM emp a,dept b
where a.deptno = b.deptno
ORDER BY b.deptno;
v_file UTL_FILE.FILE_TYPE;
v_deptno varchar2(100);
BEGIN
v_file := UTL_FILE.FOPEN('TEMP_DIR', 'shagar_test.csv', 'W');
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;
/
Текущий выход
введите сюда описание изображения
Ожидаемый результат
Просто добавьте новую строку, прежде чем перебирать данные.
-- Write the header line
UTL_FILE.PUT_LINE(v_file, 'EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO');
Таким образом, все ваше определение процедуры будет таким:
CREATE OR REPLACE PROCEDURE EMP_CSV_EX AS
CURSOR c_data IS
SELECT a.empno,
a.ename,
a.job,
a.mgr,
TO_CHAR(a.hiredate,'DD-MON-YYYY') AS hiredate,
a.sal,
a.comm,
b.deptno
FROM emp a, dept b
WHERE a.deptno = b.deptno
ORDER BY b.deptno;
v_file UTL_FILE.FILE_TYPE;
BEGIN
v_file := UTL_FILE.FOPEN('TEMP_DIR', 'shagar_test.csv', 'W');
-- Write the header line
UTL_FILE.PUT_LINE(v_file, 'EMPNO,ENAME,JOB,MGR,HIREDATE,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.sal || ',' ||
cur_rec.comm || ',' ||
cur_rec.deptno);
END LOOP;
UTL_FILE.FCLOSE(v_file);
EXCEPTION
WHEN OTHERS THEN
IF UTL_FILE.IS_OPEN(v_file) THEN
UTL_FILE.FCLOSE(v_file);
END IF;
RAISE;
END;
/
если возможно отобразить результаты по группам по отделам? Пример № отдела 10 EMP_NO EMP_NAME JOB 20 EMP_NO EMP_NAME JOB
в одну сторону, открыть файл, написать заголовок. Затем снова откройте файл, чтобы записать данные.