Oracle Forms 在 When-Validate-Record 触发器中清除记录

标签 oracle oracleforms

当用户开始填充记录时,他们在提交之前单击其他记录,我想清除最后一条记录,就像它从未填充过一样。

所以我在数据 block 中创建when-validate-record,如下所示:

begin
  if :MYBLOCK.SEQ is null then --if there is no seq yet, means its not committed
    Clear_Record;
  end if;
end;

但是 clear_record 会导致错误,提示无效的有限 CLEAR_RECORD 过程,并且用法对我来说似乎是正确的。我也尝试过 Clear_Record(no_validate) 但它也不起作用。我看到了 clear_record 的一些用法,但我不明白为什么它不起作用。我需要一些帮助。

提前致谢。

最佳答案

不能从所有触发器中调用受限过程(不是受限,如您所说); WHEN-VALIDATE-RECORD 就是其中之一。

您可以选择的一个选项是与用户交互并告诉他们要做什么。仍然是 WHEN-VALIDATE-RECORD 触发器:

if :MYBLOCK.SEQ is null then -- if there is no seq yet, means its not committed
   message('Save the record or - if you do not need it - delete it');
   raise form_trigger_failure;
end if;

这种方法的好处是用户(而不是后台的过程)决定要做什么。我不想在屏幕上输入 20 个字段,意外点击之前的记录之一,从而丢失迄今为止所做的一切。

关于Oracle Forms 在 When-Validate-Record 触发器中清除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248170/

相关文章:

java - 如何打印出将发送到 oracle 的 sql 查询

java - 如何在java集合中做内循环?

properties - 如何在 Oracle 表单中禁用表单启动阻止并启用相同的按钮单击功能

perl - 将多字节字符从 perl 插入 oracle 时遇到 ORA-01461

database - Oracle : Locking or not? 中的并发更新

SQL (Oracle) Select 没有包含静态数据的实际表

oracle - 表单抑制错误消息并捕获 frm-40350

oracle - 在 Oracle Forms 中评估 PL/SQL boolean 变量

oracleforms - Oracle Forms - 当前文档在哪里?

Oracle Forms - 根据查询数据启用/禁用表格列表项行