这是我为按钮上的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上运行此查询,它运行成功。 请尽快给我一个解决方案,我将非常感谢你。
答案 0 :(得分:2)
这是表格;如果您打算像SQL * Plus一样使用&符号,那么,你就错了,因为Forms不能那样工作。您应该创建表单项,让用户填充其值,然后将这些值存储到数据库中。
你得到的错误是因为你在一些数字列中插入字符串;最明显的是PRICE - 也就是说,很可能是一个NUMBER数据类型列,而且你正在把它放在它的价格中。
最常用的方法是使用数据块向导,将块基于BOOK表,而Forms将为您创建所有 - 您只需运行表单,将一些值放入那些项目和提交。
您现在的方式,似乎您想要使用控件块,即不基于底层数据库对象的块(例如表或视图),所以你必须创建自己的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
)