匯出所有DB2儲存過程的四種方法

2022-02-23 01:08:20 字數 1338 閱讀 5733

db2儲存過程如果要全部匯出的話,是否可行呢?答案是肯定的,下面就為您介紹四種匯出所有db2儲存過程的方法,希望對您學習db2儲存過程方面能有所幫助。

1)從 db2 的目錄表 syscat.routines 中選取:

在 syscat.routines 系統目錄表中,有乙個名為 text 的字段,其資料型別定義為 clob,長度為 2m(2097152 個位元組),用於存放儲存過程的建立語句。為得到全部儲存過程的定義,可使用類似如下 select 語句,並將定義輸出到乙個檔案中。

db2 select char(routineschema,20), char(routinename,20), text from syscat.routines >《輸出檔名》

此方法的缺陷是當text>32767時,匯出的該條儲存過程是不完整的。

2)對於 v8.2 之後的 db2,db2look 命令的 -e 選項中增加了對儲存過程的建立語句的提取,使用者通過執行:

db2look -d 《資料庫名》 -e -o 《輸出檔名》

在命輸出檔案中找到「儲存過程的 ddl 語句」段,從而獲得建立所有儲存過程的語句。

據說,db2 v8中 的db2look匯出的儲存過程是不完整的

3)通過 get routine 命令來完成:

由於 get routine 只能在已知儲存過程名稱後,對單個儲存過程進行,因此需要分成兩個步驟來完成:

1. 獲取所有儲存過程的名稱:

db2 select char(routineschema,20) as schema, char(routinename,20) as name from syscat.routines where substr(varchar(text),1,16) = 'create procedure' >《輸出檔名》

2. 根據輸出檔案中儲存過程的名稱,分別對每個儲存過程執行如下操作,以便將完整的建立語句輸出到指定檔案中:

db2 get routine into 《輸出檔名》 from procedure 《儲存過程模式名》.《儲存過程名》

這個有點繁瑣

4)使用export:

db2 "export to procudure.del of del modified by lobsinfile select 'set current schema '||rtrim(procschema)||'@'||chr(10)||'set current path = sysibm,sysfun,sysproc,'||rtrim(procschema)||' @'||chr(10)||text||chr(10)||'@'||chr(10) from syscat.procedures order by create_time ;"

推薦這個。

匯出所有DB2儲存過程的四種方法

匯出所有db2儲存過程的四種方法 t0nsha s comments db2look不能按儲存過程分開匯出檔案,對許可權有要求 get routine匯出的檔案前面一部分是亂碼 export to配合syscat.procedures靈活度最好,推薦 db2儲存過程如果要全部匯出的話,是否可行呢?答...

DB2中四種隔離級 UR,CS,RS,RR

1 ur uncommited read 俗稱 髒讀 在沒有提交資料的時候能夠讀到更新的資料 2 cs cursor stability 在乙個事務中進行查詢時,允許讀取提交前的資料,資料提交後,當前查詢就可以讀取到資料,update資料的時候並不鎖表 3 rs read stability 在乙個...

DB2儲存過程的異常處理

1 自定義異常 declare condition for sqlstate 注 可以從7 9或t z開頭 2 異常捕捉 declare exit continue undo handler for 異常 sqlstate begin get diagnostics exception 1 sqle...