標籤:
oracle表如果含有clob欄位,則無法匯出用sql指令碼,尤其需要進行資料備份或者資料匯入匯出時候不方便。這個預存程序你只需傳入表名和需要返回的結果,就可以擷取可執行檔sql,直接在PL/SQL執行返回的結果,即可將資料匯出成sql,預存程序如下
create or replace procedure generate_insert_sql(t_name in varchar2,execute_sql out varchar2) as CURSOR col_cur is select column_name, data_type from user_tab_cols where table_name like t_name; col_name varchar2(500);BEGIN FOR col in col_cur loop if col.data_type=‘CLOB‘ then col_name := ‘ to_char(‘ || col.column_name || ‘) as ‘||col.column_name||‘ ,‘; else col_name := col.column_name || ‘,‘; end if; execute_sql := execute_sql || col_name;end loop;execute_sql := ‘select ‘ ||RTRIM(execute_sql,‘,‘)|| ‘ from ‘||t_name;end;
測試例子如下,測試載入器為PL/SQL
1.建立測試表
create table test_table( name varchar2(30), test_clob1 clob, test_clob2 clob );
2.插入初始化資料
3.執行預存程序
4.執行擷取的sql 5.匯出查詢資料為sql 6.查看匯出的sql 最後你就可以把你得到的sql匯入到你需要導的地方了。
oracle預存程序產生含有clob欄位表的可執行匯出指令碼