PL / SQL触发器无法运行

时间:2018-10-21 14:44:55

标签: oracle plsql weblogic oracleforms

我有一个在Weblogic服务器上运行的Oracle Forms 11 g应用程序。默认的表单/登录页面具有一些不会触发的PL / SQL触发器。其余配置似乎成功。

谁能给我有关从哪里开始寻找的指示?预先感谢。

1 个答案:

答案 0 :(得分:1)

顾名思义,触发会在某些东西触发时触发。例如,

  • 按下按钮即可触发WHEN-BUTTON-PRESSED触发器
  • 在数据块中执行查询后,将触发POST-QUERY触发器
  • 运行表单时会触发WHEN-NEW-FORM-INSTANCE触发器

,依此类推。

因此,请确保确实触发了触发器。您拥有它们的事实并不意味着它们会运行,仅仅是因为

为了找出答案,您有两个选择:

  • 以调试模式运行表单:
    • 在其中一个触发器中(例如在WHEN-NEW-FORM-INSTANCE中),通过右键单击断点的左边距来设置断点(您将看到下一步做什么)
    • 然后运行表格;您用来运行它的绿色工具栏图标不应该使用,但是它旁边的那个图标上带有 redishish
    • 一旦执行到断点,它将停止,您将被转移到Forms Builder,调试控制台将打开,并让您逐步浏览其余代码
    • 执行此操作,您将知道发生了什么,即是否调用了这些触发器以及它们的作用
      • 您可能会怀疑:您是否偶然地放了一些使用WHEN OTHERS THEN NULL或类似名称的异常处理程序?如果是这样,请摆脱它们。即使引发了异常(例如NO_DATA_FOUNDTOO_MANY_ROWS,仅举两个最流行的和最常见的情况),THEN NULL也会默默屏蔽它
  • 另一种方法是将MESSAGE调用放入触发器中,例如

    begin
      message('running WBP trigger: step 1');
      ... the rest of your code goes here
    end;
    

    这样做,“消息后消息”将在屏幕上引发“警报”(因为您必须单击“确定”才能看到消息中的内容),并且您将迅速看到触发了哪些触发器,而没有触发。然后进一步研究-前面描述的调试会有所帮助。

如果以上方法均无济于事,则您必须描述正在发生的事情,但这一次提供了更多信息。您写的内容描述性不强。无论如何,祝你好运。