You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Forms中能否在单个触发器内设置两个不同的定时器?

实现正确性判断

你的基础实现逻辑完全可用,核心功能符合Oracle Forms定时器的开发规范:

  • WHEN_NEW_FORM_INSTANCE触发器中创建两个不同时长的一次性定时器的语法正确,60000毫秒对应60秒、270000毫秒对应270秒的时长配置符合需求
  • WHEN_TIMER_EXPIRED触发器中通过GET_APPLICATION_PROPERTY(timer_name)获取触发定时器名称、再分支执行对应逻辑的思路正确,到期退出表单的语法也符合规范。

可优化点

  • 新增定时器创建前的重名校验
    若表单其他逻辑存在创建同名定时器的可能,创建前先删除已存在的同名定时器,避免创建失败导致报错:
    DECLARE
    BEGIN    
      IF GET_TIMER('POCETAK') IS NOT NULL THEN
        DELETE_TIMER('POCETAK');
      END IF;
      IF GET_TIMER('KRAJ') IS NOT NULL THEN
        DELETE_TIMER('KRAJ');
      END IF;
      CREATE_TIMER('POCETAK',60000,NO_REPEAT);   
      CREATE_TIMER('KRAJ',270000,NO_REPEAT);    
    EXCEPTION
      WHEN OTHERS THEN
        -- 可按需增加报错日志记录逻辑
        NULL;
    END;
    
  • 删除冗余变量
    你声明的timer_pocetak、timer_zatvori两个TIMER类型变量后续没有被使用,可以直接删除,减少无效代码。
  • 统一分支判断的大小写
    对定时器名称增加大写转换处理,避免部分环境大小写敏感导致分支判断失效:
    v_timer_name := UPPER(GET_APPLICATION_PROPERTY(timer_name));
    
  • 优化退出表单的用户体验
    执行EXIT_FORM前先判断表单是否有未保存的修改,可弹出提示询问用户是否需要保存数据,避免用户操作内容被直接回滚丢失。
  • 新增应用信息清理的异常捕获
    用异常块包裹DBMS_APPLICATION_INFO相关调用,避免数据库权限不足、版本不兼容等问题导致退出流程报错。

内容的提问来源于stack exchange,提问作者VedranaC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:24:06