当用户开始填充记录时,他们在提交之前单击其他记录,我想清除最后一条记录,就像它从未填充过一样。
所以我在数据 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/