oracle - PL/SQL 触发器不会运行
问题描述
我有一个在 Weblogic 服务器上运行的 Oracle Forms 11 g 应用程序。默认的表单/登录页面有一些根本不会触发的 PL/SQL 触发器。其余的配置似乎成功了。
谁能给我指点从哪里开始寻找?提前致谢。
解决方案
正如他们的名字所暗示的那样,触发器会在某些东西触发它们时触发。例如,
- 通过
WHEN-BUTTON-PRESSED
按下按钮触发触发器 - 在
POST-QUERY
数据块中执行查询后触发触发器 - 运行
WHEN-NEW-FORM-INSTANCE
表单时触发触发器
等等。
因此,请确保触发器确实被触发。你拥有它们并不意味着它们会运行,只是因为.
为了找出答案,您有两种选择:
- 在调试模式下运行表单:
- 在其中一个触发器中(例如在 a 中
WHEN-NEW-FORM-INSTANCE
)通过右键单击其左边距来设置断点(您将看到接下来要做什么) - 然后运行表格;你用来运行它的那个绿色工具栏图标不应该被使用,而是它旁边的那个,上面有红色的东西
- 一旦执行到达断点,它将停止,您将被转移到 Forms Builder,调试控制台将打开,让您逐步浏览其余代码
- 这样做,你就会知道发生了什么,即这些触发器是否被调用以及它们做了什么
- 正如您所怀疑的那样:您是否有任何机会放置了一些使用
WHEN OTHERS THEN NULL
或类似的异常处理程序?如果是这样,请摆脱它们。即使引发异常(例如NO_DATA_FOUND
orTOO_MANY_ROWS
,仅提及两个最流行和最常见的异常),THEN NULL
也会默默地掩盖它
- 正如您所怀疑的那样:您是否有任何机会放置了一些使用
- 在其中一个触发器中(例如在 a 中
另一种是将
MESSAGE
调用放入触发器中,例如begin message('running WBP trigger: step 1'); ... the rest of your code goes here end;
这样做,message-after-message 将在屏幕上发出“警报”(因为您必须单击 OK 才能看到它所说的内容),并且您会很快看到哪些触发器被触发,哪些没有触发。然后进一步调查它 - 前面描述的调试将有所帮助。
如果这些都没有帮助,您将不得不描述正在发生的事情,但这次提供更多信息。你写的不是很详细。无论如何,祝你好运。
推荐阅读
- python - 错误:“NoneType”对象没有“调用”属性
- javascript - 在引导程序 datepicker 中禁用 18 岁以下的年份
- java - 无法通过 Runtime.exec 运行命令
- php - 尝试检索和解析 php 文件中的 authorize.net webhook 时未找到 Webhook 类
- html - 如何在底部创建一个全宽三角形?
- routing - 共享 VPC 中的直接私有到私有 IP 路由是否通过 NAT,它是否一定比通过公共代理更快?
- excel - 是否有将 0.888 转换为 0.9 的函数
- python - NameError:名称“build_ext”未定义
- node.js - 使用注册到数据库的数据进行计算
- java - 从 getter 方法获取字段名称