0

我正在实现一个 DB2 Native SQL 过程。这是我们在这家商店第一次尝试这个。我附上了下面的代码。该例程所做的是按时间跟踪添加到表中的新记录的数量。每当它触发时,它要么更新监控表中的记录,要么在表不存在时插入一条记录。

本机过程是 Z/os db2 版本 9 的新功能。

关于 Z/os db2 v9 过程的红皮书写道:“图 15-15 描绘了分别从远程应用程序、DB2 附加程序或相关地址空间调用本机 SQL 过程时所涉及的 DB2 组件。如图所示, SQL 语句不再在外部 WLM 地址空间中执行,而是在数据库系统服务地址空间中本地执行。为了执行,过程包被加载到 EDM 池中。”

然而,如果我从代码中删除“WLM ENVIRONMENT FOR DEBUG MODE DSNDSPENV”行,我会收到一条错误消息,指出“必须指定 WLM 环境”。

有谁知道此代码可能存在 WLM 依赖项的原因?我是否需要覆盖 WLM_ENVIRONMENT 默认值?如果是这样,我该怎么做?


新的信息 - - - - - - - - - - - - - - - - - - - - - - - - --------


如果您添加选项“禁用调试模式”,您似乎不需要为调试指定 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 ;               
4

1 回答 1

0

WLM 代表工作负载管理器。

工作负载管理器(它是基本 z/OS 的一部分)负责分配内存和其他资源并运行您的脚本。

每个 WLM 环境将以不同的优先级运行脚本,并有自己的最长运行时间、最大 cpu 消耗和自己的一组关于可以访问哪些资源的规则的设置。

于 2010-11-05T07:17:17.140 回答