互联网服务

db2 如何将一个数据库中的存储过程拿出来

如何将db2一个数据库中的存储过程全部拿出来?
参与10

9同行回答

Phyllis518liuPhyllis518liu数据库管理员新岸线
回复 3# bygt2010 试了,没有db2look方便。显示全部
回复 3# bygt2010

试了,没有db2look方便。收起
银行 · 2014-01-14
浏览557
jayciededejayciedede技术经理安图特(北京)科技有限公司
回复 8# 共同进步    是的,还是db2look最方便显示全部
回复 8# 共同进步


   是的,还是db2look最方便收起
互联网服务 · 2013-12-16
浏览522
共同进步共同进步数据库架构师中国金融电子化公司
使用db2look应该也可以,我记得导出一张表定义的时候会同时把与该表定义相关的所有对象的定义也导出来显示全部
使用db2look应该也可以,我记得导出一张表定义的时候会同时把与该表定义相关的所有对象的定义也导出来收起
软件开发 · 2013-12-16
浏览528
共同进步共同进步数据库架构师中国金融电子化公司
export to proc.del of del lobs to . select text from syscat.procedures where procschema='$SCHEMANAME'注意必须加lobs to选项,否则大的存储过程定义只能导出一部分显示全部
export to proc.del of del lobs to . select text from syscat.procedures where procschema='$SCHEMANAME'
注意必须加lobs to选项,否则大的存储过程定义只能导出一部分收起
软件开发 · 2013-11-26
浏览518
vtudivvtudiv研发工程师钢信软件
学习了,感谢分享。显示全部
学习了,感谢分享。收起
软件开发 · 2013-11-13
浏览534
sunny_zhao0127sunny_zhao0127数据库管理员C.H.Robinsion
已找到方法有四种:1  select routinename,text from sysibm.sysroutines;1.1  、DB2 SELECT CHAR(ROUTINESCHEMA,20), CHAR(ROUTINENAME,20), TEXT FROM SYSCAT.ROUTINES > 此方法的缺陷是当text>32767时,导出的该条存储过程是不完整的。2 DB2LOOK 命令...显示全部
已找到
方法有四种:
1  select routinename,text from sysibm.sysroutines;
1.1  、DB2 SELECT CHAR(ROUTINESCHEMA,20), CHAR(ROUTINENAME,20), TEXT FROM SYSCAT.ROUTINES > <输出文件名>
此方法的缺陷是当text>32767时,导出的该条存储过程是不完整的。

2 DB2LOOK 命令的 -e 选项中增加了对存储过程的创建语句的提取
  db2look -d <数据库名> -e -o <输出文件名>

3 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 ; "收起
互联网服务 · 2013-11-13
浏览620
bygt2010bygt2010it技术咨询顾问自由空间科技公司
SELECT TEXT FROM SYSIBMADM.ALL_SOURCE WHERE NAME='P_CAL_WATCHAR'; 也可以得到创建过程的语句块。显示全部
SELECT TEXT FROM SYSIBMADM.ALL_SOURCE WHERE NAME='P_CAL_WATCHAR'; 也可以得到创建过程的语句块。收起
IT咨询服务 · 2013-11-13
浏览550
bygt2010bygt2010it技术咨询顾问自由空间科技公司
select text from SYSCAT.PROCEDURES where procname='P_CAL_WATCHAR';TEXT字段就是存储过程的内容!显示全部
select text from SYSCAT.PROCEDURES where procname='P_CAL_WATCHAR';
TEXT字段就是存储过程的内容!收起
IT咨询服务 · 2013-11-13
浏览561
xinyongzhi123xinyongzhi123数据库管理员宇信易诚
这个也要花钱? 不是写的请教么显示全部
这个也要花钱? 不是写的请教么收起
互联网服务 · 2013-11-12
浏览558

提问者

sunny_zhao0127
数据库管理员C.H.Robinsion
擅长领域: 数据库

问题状态

  • 发布时间:2013-11-12
  • 关注会员:1 人
  • 问题浏览:4604
  • 最近回答:2014-01-14
  • X社区推广