首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应该使用哪一个引发应用程序错误号?

应该使用哪一个引发应用程序错误号?
EN

Stack Overflow用户
提问于 2018-06-25 23:21:17
回答 1查看 945关注 0票数 1

我正在为我的数据库创建一个触发器。在我的触发器代码中,我应该使用哪个number参数:

代码语言:javascript
运行
复制
set serveroutput on

create or replace trigger iss_bk 
  after insert on Issue 
  for each row
declare
  p integer;
  q integer;
begin
  select Available_copy 
    into p 
    from book 
    where Book.ISBN = :NEW.book_id;

  q := p - :NEW.quantity;

  if q < 0 then
     RAISE_APPLICATION_ERROR(-1722,' Exceeded available quantity of book .');
  else
     update Book set 
       Available_copy = q 
       where Book.ISBN = :NEW.book_id;
  end if;    
end;
/

当Q<0输入时,错误是:

代码语言:javascript
运行
复制
ORA-21000: error number argument to raise_application_error of -1722 is out of range
ORA-06512: at "R1507090.ISS_BK", line 9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 15:17:48

根据文档的说法(如果需要的话,可以选择另一个版本,但我不认为有那么多)。“处理PL/SQL错误”说:

raise_application_error(error_number,message,{真假}); 哪里

  • error_number是范围内的负整数-20000 .-20999
  • message是一个长达2048字节的字符串。
  • 如果可选的第三个参数为真,则错误将放置在先前错误的堆栈中。如果参数为FALSE (默认值),则错误将替换以前的所有错误。

这意味着你应该使用,例如,

代码语言:javascript
运行
复制
RAISE_APPLICATION_ERROR(-20001, 'Exceeded available quantity of book.');

可以重用相同的ERROR_NUMBER值,也就是说,如果需要,您自己的所有错误消息都可以共享相同的"-20001“代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51032965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档