程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 導出所有DB2存儲過程的四種方法

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

編輯:SyBase綜合文章

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 ; "

推薦這個。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved