在 Oracle APEX 中创建引发错误的函数

Creating functions that raise errors in Oracle APEX

我已经是使用 Oracle APEX 19 的第 2 周了,我即将完成开发一个允许用户 create/update/delete 产品系列的新手级应用程序。我使用了一个交互式网格,但现在我需要在某个地方创建一个函数(验证?过程?),它调用我在 JDev 中创建的支持包。包中的函数检查 table 以查看该系列是否已经存在。如果是这样,我需要 APEX 在保存后输入 NOT 时立即引发错误。

区域名称为 PF,相关列名为 product_family。 APEX 不处理绑定变量 (:pf),所以我知道语法发生了变化,但我不知道这将如何改变下面的 PL/SQL 函数。

我创建了一个验证 类型:PL/SQL 函数体(RETURN BOOLEAN)

BEGIN
   IF product_families.product_family_exists(:pf.product_family) THEN
      MSG_ALERT (
                 'Product family previously exists.'
                ,'E'
                ,TRUE
                );
    END IF;
END;

有谁知道在网格中输入产品系列时立即引发错误的正确语法(如果它已经存在)?请和谢谢。

如果您在被调用的 package/procedure/function 中,您可以使用 APEX_ERROR 包来引发错误并阻止提交任何更改。

尝试将此添加到您的代码中,您应该会在调用代码时看到错误消息出现在浏览器中

apex_error.add_error (p_message            => 'Test error message',
                      p_display_location   => apex_error.c_inline_in_notification);

P.S。如果您在交互式网格上构建验证,则可以在验证中引用列值,如 :PRODUCT_FAMILY

简化。在标准验证中,您可以使用 :COLUMN 语法测试列值,并且可能使用 returns 错误消息的错误类型,而不是布尔值。

IF product_families.product_family_exists(:product_family) THEN
 return 'Product family previously exists.';
END IF;

Msg_alert来自哪里?看起来很forms-like.