【发布时间】:2015-08-18 10:20:29
【问题描述】:
我正在制作一个将使用 JDBC 从外部系统调用的 sql 过程(在 lib EXTLIB 中)。我们有一个用户 EXTUSER,用于运行来自那里的所有请求。问题是这个用户只能有一个起始库,在我们的例子中是EXTLIB(如果有人知道如何添加更多,请告诉我并成为我公司的英雄)。我们有一个过程initiate 来启动环境(即将所有必要的库添加到 LIBL)。这需要在EXTLIB 中的所有过程开始时调用。
我的程序需要从我们内部库中的视图中获取数据:INTERLIB。问题是我们使用 ARCAD 进行版本/发布/一切管理,而 ARCAD 不喜欢限定符,所以它会自动删除它们,这意味着一开始的声明在 INTERLIB 中找不到视图,因此它停止了在到达initate 电话之前。
我需要一种方法来在声明之前运行调用,同时保留功能。我也对任何其他替代解决方案持开放态度。我唯一能想到的就是用 RPG 编码,但我们有很多简单的程序,这只是浪费时间。在 STRSQL 中手动创建过程不是一种选择,因为当 ARCAD 将版本转移到生产环境时,它会重新编译所有内容,从而删除我们在那里放置的任何手动限定符。
代码如下:
CREATE PROCEDURE MyProcedure ()
LANGUAGE SQL
SPECIFIC MYFILE
CALLED ON NULL INPUT
DYNAMIC RESULT SETS 1
BEGIN
declare c1 cursor with return to client for
select
id,
required
from INTERLIB.cus_CustomerPurpose_v3_0
call INITIATE();
open c1;
call DEINITIATE();
END;
【问题讨论】:
-
chgusrprf extuser jobd(prodjobd)
标签: stored-procedures db2 ibm-midrange