DB2 Z / os Native SQL过程 - 已更新

时间:2010-11-04 15:59:10

标签: stored-procedures db2 procedure zos

我正在实现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 ;               

1 个答案:

答案 0 :(得分:0)

WLM代表Work Load Manager。

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

每个WLM环境都将以不同的优先级运行脚本,并拥有自己的设置,以便最大限度地运行时间,最大CPU消耗以及可以访问哪些资源的规则集。