return 关键字不起作用...如何停止程序的 运行?

return keyword wont work... how to stop running of program?

我有两个按钮做不同的工作,但有共同的检查数据输入 所以我为该检查制作了一个程序单元然后我从这两个按钮调用它 但我的问题是,当检查中出现错误时,我收到了用户消息和我所做的所有事情,但它返回到按钮内的代码并继续前进我设置了 return每个条件末尾的 关键字从 运行 获取代码,但它不起作用请问是什么问题?在错误检查通过之前我如何停止我的代码?!!

检查数据输入程序单元示例

PROCEDURE CHECK_ENTRY IS
BEGIN
    IF  :block1.text_item1 IS NULL THEN 
            SET_ITEM_INSTANCE_PROPERTY('block1.text_item1',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
            SHOW_MESSAGE('example msg .');
            RETURN;
    ELSIF   :block2.text_item2 IS NULL THEN 
            SET_ITEM_INSTANCE_PROPERTY('block2.text_item2',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
            SHOW_MESSAGE('example msg2 .');
            RETURN;
END IF ;
END;

on_button_press 触发器中的代码示例

PROCEDURE procedure_name IS

BEGIN

IF FORM_SUCCESS THEN
    DISPLAY_ERROR;

      :block1.text_item1:= :block2.text_item2;
      :block2.text_item2:=:block1.text_item1;

      **CHECK_ENTRY;**      /* here is the calling of previous program unit that check the data entry then  get back to here in case there is no error and continue commit the data and disabling text item so user wont be able to modify the data */

        COMMIT_FORM;
        program_unit('ORDER_DONE');         

ELSE
            ROLLBACK;
            DISPLAY_ERROR;
            SHOW_MESSAGE('please connect administrator.');
END IF;

END;

你的代码应该是这样的:

PROCEDURE CHECK_ENTRY IS
BEGIN
    IF  :block1.text_item1 IS NULL THEN 
            SET_ITEM_INSTANCE_PROPERTY('block1.text_item1',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
            SHOW_MESSAGE('example msg .');
            raise form_trigger_failure;
    ELSIF   :block2.text_item2 IS NULL THEN 
            SET_ITEM_INSTANCE_PROPERTY('block2.text_item2',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
            SHOW_MESSAGE('example msg2 .');
            raise form_trigger_failure;
END IF ;
END;

PROCEDURE procedure_name IS

BEGIN
      :block1.text_item1:= :block2.text_item2;
      :block2.text_item2:=:block1.text_item1;

CHECK_ENTRY;
IF FORM_SUCCESS THEN
    DISPLAY_ERROR;

        COMMIT_FORM;
        program_unit('ORDER_DONE');         

ELSE
            ROLLBACK;
            DISPLAY_ERROR;
            SHOW_MESSAGE('please connect administrator.');
END IF;

END;