create or replace procedure CREATESQL(tname in user_tab_columns.table_name%type) is column_name user_tab_columns.column_name%type; data_type user_tab_columns.data_type%type; data_length user_tab_columns.data_length%type; file_handle UTL_FILE.FILE_TYPE; cursor emp_cursor is select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns where table_name = tname;
Begin file_handle := UTL_FILE.FOPEN('c:\tmp', 'temp.txt', 'w'); open emp_cursor; loop fetch emp_cursor into column_name,data_type,data_length ; exit when emp_cursor%notfound ; UTL_FILE.PUTF(file_handle, column_name+'...');
end loop ; Close emp_cursor; UTL_FILE.FCLOSE(file_handle); If sql%notfound then Raise_application_error(-20020,'employee does not exist'); End if; end CREATESQL;
where table_name = 'TBNAME';然后根据字段名称和类型写DDL语句
SQL> desc user_tab_columns
名称
TABLE_NAME
COLUMN_NAME
DATA_TYPE
DATA_TYPE_MOD
DATA_TYPE_OWNER
DATA_LENGTH
DATA_PRECISION
DATA_SCALE
NULLABLE
COLUMN_ID
DEFAULT_LENGTH
DATA_DEFAULT
NUM_DISTINCT
LOW_VALUE
HIGH_VALUE
DENSITY
NUM_NULLS
NUM_BUCKETS
LAST_ANALYZED
SAMPLE_SIZE
CHARACTER_SET_NAME
CHAR_COL_DECL_LENGTH
GLOBAL_STATS
USER_STATS
AVG_COL_LEN
動態拼接成sql語句,這樣就得到了建立表的sql語句了。
老板是不是腦子有問題啊,呵呵。
column_name user_tab_columns.column_name%type;
data_type user_tab_columns.data_type%type;
data_length user_tab_columns.data_length%type;
file_handle UTL_FILE.FILE_TYPE;
cursor emp_cursor is select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_columns where table_name = tname;
Begin
file_handle := UTL_FILE.FOPEN('c:\tmp', 'temp.txt', 'w');
open emp_cursor;
loop
fetch emp_cursor into column_name,data_type,data_length ;
exit when emp_cursor%notfound ;
UTL_FILE.PUTF(file_handle, column_name+'...');
end loop ;
Close emp_cursor;
UTL_FILE.FCLOSE(file_handle);
If sql%notfound then
Raise_application_error(-20020,'employee does not exist');
End if;
end CREATESQL;
UTL_FILE.PUTF(file_handle, column_name+'...');
这两句的具体意思是什么?能说明一下吗?