Нужен отчет в текстовом формате с заголовками столбцов, который хранится ниже, получает выходные данные, но не отображает заголовок столбцов. Есть простой способ получить заголовки столбцов в выходном файле.
create or replace procedure report as
CURSOR t1
IS
select col1, col2,col3,col4,col5 from tab;
t1cur t1%rowtype;
vFile UTL_FILE.file_type;
vExists boolean;
vLength number;
vBlockSize number;
p_WriteMode varchar2(10);
p_Header varchar2(10);
p_path varchar2(100) := '/tmp';
p_FileName varchar2(100) := 'test.txt';
BEGIN
UTL_FILE.fgetattr(p_path, p_FileName, vExists, vLength, vBlockSize);
OPEN t1;
LOOP
FETCH t1 INTO t1cur;
IF t1%ROWCOUNT>0
THEN
IF vExists THEN
vFile := UTL_FILE.FOPEN_NCHAR(p_Path, p_FileName, p_WriteMode);
ELSE
vFile := UTL_FILE.FOPEN(p_Path, p_FileName, 'W');
END IF;
IF p_Header IS NOT NULL THEN
UTL_FILE.PUT_LINE(vFile, p_Header);
END IF;
UTL_FILE.PUT_LINE(vFile, t1cur.col1 || '|' ||t1cur.col2 || '|' ||t1cur.col3 || '|' || t1cur.col4|| '|' ||t1cur.col5);
DBMS_OUTPUT.PUT_LINE('Record count > 0');
LOOP
FETCH t1 INTO t1cur;
EXIT WHEN t1%NOTFOUND;
UTL_FILE.PUT_LINE(vFile, t1cur.col1 || '|' ||t1cur.col2 || '|' ||t1cur.col3 || '|' || t1cur.col4|| '|' ||t1cur.col5);
END LOOP;
UTL_FILE.FCLOSE(vFile);
ELSE
DBMS_OUTPUT.PUT_LINE('Record count = 0');
END IF;
EXIT;
END LOOP;
CLOSE t1;
END;
/
Ссылается: Как записать в файлы, используя utl_file в oracle https://asktom.oracle.com/pls/asktom/f?p=100: 11: 0 :: NO :: P11_QUESTION_ID: 88212348059