एक चीज जिसे आप आजमा सकते हैं वह है गतिशील रूप से "कॉलम x प्रारूप a20" कमांड उत्पन्न करना। कुछ इस तरह:
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
ध्यान दें कि यह नमूना केवल VARCHAR2 के साथ काम करेगा। उदाहरण के लिए आपको DATEs या NUMBERs के लिए जेनरेट किए गए "कॉलम" कमांड को बदलने के लिए डीकोड जोड़ना होगा।
अद्यतन:यह पता चला है कि मूल एसक्यूएल वास्तव में एसक्यूएल * प्लस के व्यवहार को नहीं बदलता है। केवल एक चीज जिसके बारे में मैं सोच सकता था, वह यह है कि फ़ील्ड नामों का नाम बदलकर एक वर्ण मान A, B, C, आदि कर दिया जाए:
select 'column ' || column_name ||
' heading "' ||
chr(ascii('A') - 1 + column_id) ||
'"'
from all_tab_cols
where table_name='YOUR_TAB_NAME'
यह निम्न के समान आउटपुट उत्पन्न करेगा:
column DEPT_NO heading "A"
column NAME heading "B"
column SUPERVIS_ID heading "C"
column ADD_DATE heading "D"
column REPORT_TYPE heading "E"