【问题标题】:RAISE_APPLICATION_ERROR doesn't return the messageRAISE_APPLICATION_ERROR 不返回消息
【发布时间】:2012-08-13 14:25:52
【问题描述】:
IF l_value = 'FALSE' THEN
  RAISE_APPLICATION_ERROR(-20299, 'some error message');
END IF;

这是表触发器的一部分。它应该返回一个错误号和消息,但是当警报弹出时它只返回消息号。没有“一些错误信息”。怎么了

【问题讨论】:

  • 您使用的是什么数据库类型?微软 SQL?甲骨文? MySQL?
  • 警报由客户端呈现。所以你的问题出在客户身上。
  • 如果客户有问题,我应该从哪里开始寻找?
  • 我们怎么知道?您还没有告诉我们您使用的是什么客户端...
  • 您使用的是什么客户端应用程序?什么应用程序导致警报“弹出”?那是丢弃错误消息的应用程序。

标签: oracle plsql oracleforms raise


【解决方案1】:

也许RAISE_APPLICATION_ERROR 这个名字会误导你。它不会在你的 GUI 上弹出一些东西。您根据所使用的客户端自行编程。让您可以使用RAISE_APPLICATION_ERROR 来创建您自己的 SQL 错误并根据这些错误采取行动。

例子

-- a example table
create table mytest (col_a number, col_b char(20));

-- a example trigger
CREATE OR REPLACE TRIGGER mytest_before
BEFORE UPDATE
    ON mytest
    FOR EACH ROW
DECLARE
BEGIN
    if :new.col_a < 0 then
      RAISE_APPLICATION_ERROR(-20299, 'negative value not allowed for column A');
    end if;
END;

insert into mytest values (1,'hallo');

set serveroutput on
DECLARE
  negative_value EXCEPTION; -- declare exception
  PRAGMA EXCEPTION_INIT (negative_value, -20299); -- assign error code to exception
BEGIN
  update mytest set col_a = -1 where col_b = 'hallo';
EXCEPTION
  WHEN negative_value THEN -- handle exception
    -- do whatever you need to do to bring the error to the user
    DBMS_OUTPUT.PUT_LINE(TO_CHAR(SQLERRM(-20299)));
END;
/

上面将为您带来 SQL*Plus 或 SQL Developer 中的那种输出。

table MYTEST created.
TRIGGER mytest_before compiled
1 rows inserted.
anonymous block completed
ORA-20299: negative value not allowed for column A
ORA-06512: at "DEMO.MYTEST_BEFORE", line 4
ORA-04088: error during execution of trigger 'DEMO.MYTEST_BEFORE

除了 DBMS_OUTPUT.PUT_LINE,您可以做任何您需要做的事情来向用户显示您希望他显示的任何内容。

【讨论】:

    【解决方案2】:

    表单中的某些触发代码已引发表单中的警报。看看你的 ON-ERROR 触发器 - 它有什么代码?

    您可能需要扩充它以在警报中显示DBMS_ERROR_TEXT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2014-08-17
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多