匯出所有db2儲存過程的四種方法
--t0nsha's comments--
db2look不能按儲存過程分開匯出檔案,對許可權有要求
get routine匯出的檔案前面一部分是亂碼
export to配合syscat.procedures靈活度最好,推薦
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 ;"
推薦這個。
from:
匯出所有DB2儲存過程的四種方法
db2儲存過程如果要全部匯出的話,是否可行呢?答案是肯定的,下面就為您介紹四種匯出所有db2儲存過程的方法,希望對您學習db2儲存過程方面能有所幫助。1 從 db2 的目錄表 syscat.routines 中選取 在 syscat.routines 系統目錄表中,有乙個名為 text 的字段,其資...
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...