
DB2 for z/OS and OS/390 存储过程的问题
热 荐
【字体:小 大】
DB2 for z/OS and OS/390 存储过程的问题
作者:- 文章来源:- 点击数:920 更新时间:2006-4-22 
Peggy Abelite
IBM® DB2 for OS/390® and z/OS™ Development
2003 年 9 月 DB2 UDB 开发人员 Peggy Abelite 回答了有关 DB2 for OS/390 and z/OS 存储过程的问题
我们的读者对 Peggy Abelite 上一篇关于 存储过程的专栏文章已经提出了许多问题。以下是 Peggy 收到的一些问题:
问:在我们公司,当空闲时间达到一个小时后,SP WLM 地址空间就会关闭。是否有办法让它们保持待机,从而避免有人运行存储过程时所产生的启动开销?另外它们为什么要这样做?
答:WLM 关闭地址空间来避免浪费系统资源。当空闲时间超过约 5 分钟后,除了最后一个用于应用程序环境/服务类的地址空间以外,其它所有地址空间都将被关闭,当空闲时间超过约一个小时后,最后一个地址空间也会关闭。我们所期望的是,要求高性能的存储过程请求会经常执行,从而足以使地址空间保持活动。对于 DB2 服务器地址空间,没有任何方法可以覆盖这种行为。
问:调用-附加(call-attach)程序可以用于替换编写存储过程吗?我们需要修改大量非 DB2 程序,这些程序将都需要调用一个公共例程以获取基于 DB2 的信息。我们不愿意为了调用存储过程而将所有这些程序都转换成 DB2?
答:是的,可以使用调用-附加来编写程序以附加到 DB2。更多信息,请参阅 DB2 Application Programming and SQL Guide。
问:我们在批处理和 CICS® 中调用一个例程来访问数据空间中数据。这个数据空间是跨区域共享的,所以它受到排队和私有锁定的保护。为了确保完全清除锁定和排队,我们在任务/事务的正常结束和异常结束时都会接收控制权。
我们打算从 DB2 存储过程调用这个例程。当然,在这种环境中必须修改任务结束时的限制。目前我们正在使用 OS/390 R2.8(必须承认,有点老)测试 DB2 6.1 的 DB2 管理的存储过程地址空间。我们正计划测试 WLM 管理的存储过程地址空间。
我们的问题是: 就 TCB 的创建和用法而言,我们是否应该预料到 DB2 管理的存储过程地址空间和 WLM 管理的存储过程地址空间之间会存在显著差别? 我们是否应该预料到 DB2 6.1 和 DB2 V7 WLM 管理的 SPAS 之间会存在显著差别?
答:对于您的处理,DB2 管理的地址空间和 WLM 管理的地址空间创建及使用 TCB 的方法上确实没有太大的差别。这两种环境中都替换了异常终止的任务。而且,DB2 V6 和 V7 在这方面也确实没有任何差别。在 V8 中,我们将使用 WLM 服务器任务管理,这意味着在地址空间待机时,可能会创建服务器任务并对它们进行拆分,但是同样,这不应该影响您们的代码。
问:RAISE_ERROR 函数可以用于 COBOL 存储过程以返回错误吗?
答:是的,可以使用该函数,但是它将只产生 COBOL 存储过程中语句上的错误。它不会影响用于调用存储过程的 SQL CALL 语句的 SQLCODE。
问:触发器是由动态 SQL 语句触发的吗?
答:是的。
问:关于支持用于 z/OS 存储过程的 SQLDA 接口,有什么想法?我们想要在平台间交换所有的存储过程,而且我们想要将当前的 lroutine 用作存储过程。我们当前的接口要交换大量变量(以结构的形式),但又不能将它们转换成结果集,而且似乎 z/OS 存储过程接口是数据元素接口,而不是数据结构接口。目前,SPUFI 中 CREATE PROCEDURE 语句的长度使我们无法定义交换变量的当前数。
