ORACLE匯出儲存過程SQL至檔案

2021-07-10 22:45:13 字數 1991 閱讀 1951

oracle匯出儲存過程sql至檔案 

專案部署時,需要遷移儲存過程,利用工具匯出過程sql,只是按照順序匯出,不能體現依賴關係,不能一次執行成功,比較麻煩。通過user_source、dba_source、all_source查詢oralce資料庫物件sql語句,並匯出至檔案。自己動手,當然知道那些是依賴關係,一次麻煩,以後方便。

1、all_source

可以看到資料庫物件的sql,方便我們分析問題,因為有些物件屬於系統物件。

select name, line, text

from user_source

where name = '&name'

and line >= 10 and line < 30

order by line;

2、使用記錄表

oracle 資料庫將管理記憶體區分為系統全域性區 sga、程式全域性區 pga、使用者全域性區 uga;記錄表之類的集合型別在處理時以管道的形式從程式全域性區 pga 中讀取資料;

游標是以集合的方式從全域性區 sga 中讀取資料;這樣在資料處理時,游標就比記錄表多了一些中間環節,使用記錄表要比游標在速度上提高2~4倍,但由於記錄表對系統的記憶體要求較高,當單列資料長度過大時,建議不使用記錄表。 本例使用記錄表來實現。

3、過程**

create or replace procedure px_sys_export_sql( v_owner varchar2 )

astype proc_info_type is

table of user_source.text%type index by binary_integer;

proc_infos proc_info_type;

file_handle utl_file.file_type;

v_str varchar2(4000);

v_sql1 varchar2(1000);

v_sql2 varchar2(1000);

v_sql3 varchar2(1000);

v_cnt number;

v_index number;

begin

v_sql1:='select distinct(name) from all_source where owner = ''' || upper(v_owner) || '''';

execute immediate v_sql1 bulk collect into proc_infos;

file_handle := utl_file.fopen('data_pump_dir','proc.sql','w');

for i in 1..proc_infos.count

loop

v_index :=1;

v_sql2:='select max(line) from all_source where owner=''' || upper(v_owner) || ''' and name=''' || proc_infos(i) || '''';

execute immediate v_sql2 into v_cnt;

while v_index<=v_cnt

loop

v_sql3:='select text from all_source where owner=''' || upper(v_owner) || ''' and name=''' || proc_infos(i) || ''' and line = ' || v_index;

execute immediate v_sql3 into v_str;

v_index:=v_index+1;

utl_file.put(file_handle,v_str);

end loop;

end loop;

utl_file.fclose(file_handle);

commit;

end px_sys_export_sql;

Oracle批量匯出儲存過程

法一 pl sql工具匯出 法二 set echo off set heading off set feedback off spool c documents and settings administrator 桌面 proc.sql 1 用sys使用者等陸的話 select text from...

如何匯出Oracle的儲存過程為Sql語句

oracle中,過程 type 函式等物件的原始碼可以通過user source或dba source查詢 注意觀察查詢結果中,帶有line欄位,表示該段原始碼的行號。所以我們可以通過拼接 create or replace package 拼接查詢結果,生成建立過程 函式等的sql語句,舉例 se...

sql匯出dbf檔案儲存過程

create proc p exporttb tbname sysname,要匯出的表名 cols nvarchar 1000 null,要匯出的表的列名字串,格式 col1,col2,col3 如果沒有給出值,則認為是所有字段 path nvarchar 1000 檔案存放目錄 fname nva...