SET SERVEROUTPUT on; SET TIMING off; SET FEEDBACK off; SET VERIFY off; SET LINESIZE 2000; SET TRIMSPOOL ON; SET TIMING OFF; --undefine TABLE_NAME; define TABLE_NAME=&&1 spool &&TABLE_NAME..sql EXEC DBMS_OUTPUT.ENABLE(5000); EXEC DBMS_OUTPUT.PUT_LINE('SET NEWPAGE 0;'); EXEC DBMS_OUTPUT.PUT_LINE('SET SPACE 0;'); EXEC DBMS_OUTPUT.PUT_LINE('SET LINESIZE 2000;'); EXEC DBMS_OUTPUT.PUT_LINE('SET PAGESIZE 0;'); EXEC DBMS_OUTPUT.PUT_LINE('SET ECHO OFF;'); EXEC DBMS_OUTPUT.PUT_LINE('SET FEEDBACK OFF;'); EXEC DBMS_OUTPUT.PUT_LINE('SET HEADING OFF;'); EXEC DBMS_OUTPUT.PUT_LINE('SET TERM OFF;'); EXEC DBMS_OUTPUT.PUT_LINE('SET TRIMSPOOL ON;'); EXEC DBMS_OUTPUT.PUT_LINE('SET TIMING OFF;'); EXEC DBMS_OUTPUT.PUT_LINE('SET RECSEP OFF;'); EXEC DBMS_OUTPUT.PUT_LINE('--SET RECSEPCHAR @;'); EXEC DBMS_OUTPUT.PUT_LINE('ALTER SESSION SET NLS_DATE_FORMAT=''YYYY/MM/DD HH24:MI:SS'';'); EXEC DBMS_OUTPUT.PUT_LINE('spool '||'&&TABLE_NAME..dat' ); DECLARE column_name varchar2(40); last_column varchar2(40); sqltext char(50); CURSOR C1(last_column VARCHAR2 ) IS SELECT DECODE( COLUMN_NAME,last_column,COLUMN_NAME||'||'' R-r ''', COLUMN_NAME||'||''^C-c^''||') FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER('&&TABLE_NAME') ORDER BY COLUMN_ID; BEGIN SELECT COLUMN_NAME INTO last_column FROM USER_TAB_COLUMNS WHERE TABLE_NAME=UPPER('&&TABLE_NAME') AND COLUMN_ID = (SELECT MAX( COLUMN_ID ) FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER('&&TABLE_NAME') ); dbms_output.put_line( 'SELECT ' ); OPEN C1( last_column ) ; LOOP FETCH C1 INTO column_name; EXIT WHEN C1%NOTFOUND; dbms_output.put_line( column_name ); END LOOP; CLOSE C1; dbms_output.put_line( ' FROM &&TABLE_NAME; ') ; END; / EXEC DBMS_OUTPUT.PUT_LINE('spool off;'); EXEC DBMS_OUTPUT.PUT_LINE('exit ;'); spool off; start &&TABLE_NAME..sql