有時候我們需要從SQL Server資料庫匯入一些表資料到Oracle資料庫。
當資料匯入成功後卻發現按欄位進行查詢卻老是提示列不存在。
這時就需要我們將表名和欄位名批量修改為大寫方式。
預存程序如下:
create or replace procedure PD_BATCHRENAMETOUPPERASmysql varchar2(1000);cursor cur is select table_name from user_tables where table_name<>upper(table_name);BEGIN --批次更新表名 FOR row IN cur LOOP mysql:='alter table "'||row.table_name||'" rename to '||upper(row.table_name); dbms_output.put_line(mysql); execute immediate mysql; END LOOP; --批次更新列名 FOR cl IN (SELECT table_name,column_name from user_tab_columns WHERE column_name<>upper(column_name) and upper(column_name) not in('SIZE','CHECK')) LOOP mysql:='alter table '||cl.table_name||' rename column "'|| cl.column_name ||'" to '||upper(cl.column_name); dbms_output.put_line(mysql); execute immediate mysql; END LOOP;END;
執行預存程序即可:
begin PD_BATCHRENAMETOUPPER();end;
注意:有時候可能欄位名是一些關鍵字,導致執行失敗,可以根據錯誤提示將關鍵字在預存程序中進行過濾排除,然後重新編輯預存程序再次執行即可。