【问题标题】:frm-40735:when mouse click trigger raised unhandled exception ora-06502frm-40735:当鼠标单击触发器引发未处理的异常 ora-06502
【发布时间】:2018-04-05 14:19:44
【问题描述】:

这是我为按钮上的 when_mouse_click 触发器编写的代码

declare 
a varchar2(20) := '&book_no';
b varchar2(20) := '&book_name';
c varchar2(20) := '&price';
d number(4) := '&no_of_books';
begin
insert into book
values (a,b,c,d);
EXCEPTION
when VALUE_ERROR then
dbms_output.put_line('VALUE_ERROR exception raised');
end;

它编译成功但是当我运行它时说:

frm-40735:当鼠标点击触发引发未处理异常 ora-06502

但是当我显示错误时它说

最近没有遇到任何错误

同时我在我的 sqlplus 上运行这个查询,它运行成功。 请尽快给我一个解决方案,我将非常感谢你。

【问题讨论】:

    标签: oracle error-handling exception-handling oracle10g oracleforms


    【解决方案1】:

    这是表格;如果您打算像在 SQL*Plus 中那样使用与号 (&),那么您就大错特错了,因为 Forms 不是这样工作的。您应该创建表单items,让用户填充他们的值,然后将这些值存储到数据库中。

    您遇到的错误是因为您将字符串插入到某些数字列中;最明显的是 PRICE - 也就是说,很可能是一个 NUMBER 数据类型列,并且您将 &price 放入其中。

    最常用的方法是使用数据块向导,将块基于 BOOK 表,Forms 会为您创建一切 - 您只需运行表单,将一些值放入这些项目并提交。

    按照您现在的操作方式,您似乎想使用 control 块,即不基于底层数据库对象(例如表或视图),因此您必须创建自己的 INSERT 逻辑 - 我建议您不要这样做。但是,如果您坚持,那么触发器将如下所示:

    begin
      insert into book
        values (:a, :b, :c, :d);
    
    EXCEPTION
      when VALUE_ERROR then
        message('VALUE_ERROR exception raised');
        raise form_trigger_failure;
    end;
    
    • 使用冒号引用项目(我还建议您始终使用块和项目名称来引用它们,例如:block.item_name
    • DBMS_OUTPUT.PUT_LINE 在表单中不起作用

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 1970-01-01
      • 2019-08-30
      • 2019-04-21
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2022-01-26
      相关资源
      最近更新 更多