新聞中心
DB2存儲過程如果要全部導(dǎo)出的話,是否可行呢?答案是肯定的,下面就為您介紹四種導(dǎo)出所有DB2存儲過程的方法,希望對您學(xué)習(xí)DB2存儲過程方面能有所幫助。

永德網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
1)
從 DB2 的目錄表 SYSCAT.ROUTINES 中選?。?br /> 在 SYSCAT.ROUTINES 系統(tǒng)目錄表中,有一個(gè)名為 TEXT 的字段,其數(shù)據(jù)類型定義為 CLOB,長度為 2M(2097152 個(gè)字節(jié)),用于存放存儲過程的創(chuàng)建語句。為得到全部存儲過程的定義,可使用類似如下 SELECT 語句,并將定義輸出到一個(gè)文件中。
DB2 SELECT CHAR(ROUTINESCHEMA,20), CHAR(ROUTINENAME,20), TEXT FROM SYSCAT.ROUTINES > <輸出文件名>
此方法的缺陷是當(dāng)text>32767時(shí),導(dǎo)出的該條存儲過程是不完整的。
2)
對于 v8.2 之后的 DB2,DB2LOOK 命令的 -e 選項(xiàng)中增加了對存儲過程的創(chuàng)建語句的提取,用戶通過執(zhí)行:
db2look -d <數(shù)據(jù)庫名> -e -o <輸出文件名>
在命輸出文件中找到“存儲過程的 DDL 語句”段,從而獲得創(chuàng)建所有存儲過程的語句。
據(jù)說,db2 v8中 的db2look導(dǎo)出的存儲過程是不完整的
3)
通過 GET ROUTINE 命令來完成:
由于 GET ROUTINE 只能在已知存儲過程名稱后,對單個(gè)存儲過程進(jìn)行,因此需要分成兩個(gè)步驟來完成:
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. 根據(jù)輸出文件中存儲過程的名稱,分別對每個(gè)存儲過程執(zhí)行如下操作,以便將完整的創(chuàng)建語句輸出到指定文件中:
DB2 GET ROUTINE INTO <輸出文件名> FROM PROCEDURE <存儲過程模式名>.<存儲過程名>
這個(gè)有點(diǎn)繁瑣
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 ; "
推薦這個(gè)。
【編輯推薦】
教您如何實(shí)現(xiàn)DB2在線導(dǎo)入
db2存儲過程常用語句
DB2 CREATE SERVER語句的用法
DB2 Merge語句的用法
DB2游標(biāo)原理介紹
分享文章:導(dǎo)出所有DB2存儲過程的四種方法
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/dhjdhgp.html


咨詢
建站咨詢
