Một điều bạn có thể thử là tạo động các lệnh "cột x định dạng a20". Một cái gì đó như sau:
set termout off
set feedback off
spool t1.sql
select 'column ' || column_name || ' format a' || data_length
from all_tab_cols
where table_name='YOUR_TABLE'
/
spool off
@t1.sql
set pagesize 24
set heading on
spool result.txt
select *
from YOUR_TABLE;
and rownum < 30;
spool off
Lưu ý rằng mẫu này sẽ chỉ hoạt động với VARCHAR2. Ví dụ, bạn sẽ cần thêm giải mã để thay đổi lệnh "cột" đã tạo cho DATE hoặc NUMBERs.
CẬP NHẬT:Hóa ra SQL gốc không thực sự thay đổi hành vi của SQL * Plus. Điều duy nhất tôi có thể nghĩ đến là đổi tên các tên trường thành một giá trị ký tự A, B, C, v.v. theo cách sau:
select 'column ' || column_name ||
' heading "' ||
chr(ascii('A') - 1 + column_id) ||
'"'
from all_tab_cols
where table_name='YOUR_TAB_NAME'
Nó sẽ tạo ra kết quả tương tự như:
column DEPT_NO heading "A"
column NAME heading "B"
column SUPERVIS_ID heading "C"
column ADD_DATE heading "D"
column REPORT_TYPE heading "E"