扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
1. @echo off 2. mkdir logs 3. set logfile=logs\%2.dep.txt 4. echo --- dependent SPs --- >> %logfile% 5. db2 "select r.routineschema, r.routinename from syscat.routines r, syscat.packagedep pdep where pdep.bname=upper('%2') and pdep.bschema=upper('%1') and pdep.pkgname = 'p'||substr(char(r.lib_id+10000000),2) " >> %logfile% 6. echo --- dependent UDF --- >> %logfile% 7. db2 select routineschema, routinename from syscat.routinedep where bschema = upper('%1') and bname = upper('%2') and btype ='T' order by bname >> %logfile% 8. echo --- dependent view --- >> %logfile% 9. db2 select viewschema, viewname from syscat.viewdep where bschema = upper('%1') and bname = upper('%2') and btype ='T' order by bname >> %logfile% 10. start %logfile% |
脚本第 5 行是获得依赖某表的存储过程。因为存储过程会被编译成包(package)。所以,存储过程和表的依赖关系实际上是存储过程对应的包(package)和表之间的依赖关系。这种关系被记录在 syscat.packagedep 视图中。同样的,我们可以通过查询 syscat.routinedep 和 syscat.viewdep 视图,获得 UDF 和表,视图和表之间的依赖关系。
使用上面的脚本,进行数据库开发就会很方便。下面我们看一个开发的例子。
由于业务变更,我们的《订单管理系统》中的表 MIS.ORDER 需要加一个字段 GOV_FLAG SMALLINT 来标识是否是政府订单,如果是则需要执行特殊的折扣政策。同时需要去除冗余字段 ORDER_PRICE_TOT DECIMAL(19,4)。
开发过程
我们需要修改相应的表,存储过程和 UDF 的 SQL 文件,并把它们重新装载到开发数据库和集成测试数据库中。并需要保留表中原有数据。
假设我们有两个数据库,一个是名为 dev 的开发数据库,一个是名为 test 的集成测试数据库。只有项目组长拥有在 test 数据库上执行的权限,开发人员只可以在 dev 数据库上执行操作。
首先项目组长会分析需求,制定任务分配;然后开发人员根据任务分配编写相应的 SQL 和脚本文件,并且在 dev 数据库上进行装载和测试;最后项目组长把开发人员提交的脚本文件汇总起来,在 test 数据库上进行装载和测试。
项目组长需要把这个任务分配给组员去完成。首先组长使用脚本 viewtable MIS ORDER 查看一下当前在数据库中表的结构,检查添加的字段是否会和其他字段有冲突。然后项目组长使用脚本 dep MIS ORDER 获得依赖表 MIS.ORDER 的所有 DB2 对象。经过分析这些依赖对象,项目组长发现,表结构的修改会导致存储过程 MIS.SP_ADD_ORDER、UDF MIS.F_CHECK_ORDER 和视图 MIS.V_ORDER 的修改,并会导致两个存储过程需要 rebind。分析结果汇总如下表 8 所示:
名称 | 执行操作 | 备注 |
---|---|---|
MIS.SP_ADD_ORDER | 修改 | |
MIS.SP_UPDATE_ORDER | rebind | 没有使用要删除的字段,不必修改 |
MIS.SP_ADD_ORDER | rebind | 没有使用要删除的字段,不必修改 |
MIS.F_CHECK_ORDER | 修改 | |
MIS.V_ORDER | 修改 |
于是项目组长进行如表 9 的任务分配。
编号 | 任务 | 执行人 | 前提条件 | 完成标志 |
---|---|---|---|---|
10 | 修改 ORDER.SQL,在 MIS.ORDER 中:
|
A | 无 |
|
20 | 根据新的 MIS.ORDER 表结构修改储存过程: SP_ADD_ORDER.SQL | B | 任务 10 完成 |
|
30 |
|
C | 任务 10 完成 |
|
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者