我正在实现DB2 Native SQL过程。这是我们第一次在这家商店尝试过。我已附上以下代码。此例程的作用是跟踪按时间添加到表中的新记录的数量。无论何时触发,它都会更新监控表中的记录,或者如果表不存在则插入记录。
本机过程是Z / os db2版本9的新增功能。
关于Z / os db2 v9程序的红皮书读取: “图15-15描述了调用本机SQL过程时涉及的DB2组件 来自远程应用程序,DB2附加程序或联合地址空间 分别。如图所示,SQL语句不再在外部WLM中执行 地址空间,但本机在数据库系统服务地址空间中。执行, 过程包被加载到EDM池中。“
然而,如果我从代码中删除“调试模式DSNDSPENV的WLM环境”这一行,我会收到一条错误消息,说“必须指定WLM环境”。
有没有人知道这个代码可能存在WLM依赖的原因?我是否需要覆盖WLM_ENVIRONMENT默认值?如果是这样,我该怎么做?
新资讯--------------------------------------------- -----------
看来,如果添加“DISABLE DEBUG MODE”选项,则不需要为DEBUG指定WLM。
禁用调试模式的缺点是什么?在“允许调试模式”中留下程序是否有任何缺点?使用可以允许调试的过程是否有开销?
--#SET TERMINATOR !
CREATE PROCEDURE $172.VQT_QUOTE_INFO_COUNT_NEW_QUOTE(
IN RATING_STATE CHAR(2),
IN INSERT_TIMESTAMP TIMESTAMP)
LANGUAGE SQL
ALLOW DEBUG MODE
WLM ENVIRONMENT FOR DEBUG MODE DSNDSPENV
BEGIN
DECLARE NO_RECORD_UPDATED INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
SET NO_RECORD_UPDATED = 1;
UPDATE $172.VKT_MONITORING_COUNTS
SET MC_QUOTE_CNT = MC_QUOTE_CNT + 1
WHERE MC_STATE_ABBREV = RATING_STATE AND
MC_SAMPLE_DATE = DATE(INSERT_TIMESTAMP) AND
MC_SAMPLE_HOUR = HOUR(INSERT_TIMESTAMP);
IF NO_RECORD_UPDATED = 1 THEN
INSERT INTO $172.VKT_MONITORING_COUNTS (
MC_STATE_ABBREV, MC_SAMPLE_DATE, MC_SAMPLE_HOUR,
MC_QUOTE_CNT, MC_NEW_POLICY_CNT)
VALUES.
(RATING_STATE, DATE(INSERT_TIMESTAMP),
HOUR(INSERT_TIMESTAMP), 1, 0);
END IF;
END.#
--#SET TERMINATOR ;
答案 0 :(得分:0)
WLM代表Work Load Manager。
工作负载管理器(它是基本z / OS的一部分)负责分配内存和其他资源并运行脚本。
每个WLM环境都将以不同的优先级运行脚本,并拥有自己的设置,以便最大限度地运行时间,最大CPU消耗以及可以访问哪些资源的规则集。