首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在oracle中抑制ORA-06512异常堆栈信息

在oracle中抑制ORA-06512异常堆栈信息
EN

Stack Overflow用户
提问于 2013-08-05 12:37:26
回答 2查看 3.6K关注 0票数 1

我正在为no_data_found使用用户定义的异常,但仍然看到ORA-06512堆栈信息以及用户定义的异常ORA-20106

代码语言:javascript
运行
复制
ORA-20106: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 30

如何抑制ORA-06512堆栈信息?

这是我的密码

代码语言:javascript
运行
复制
CREATE OR REPLACE FUNCTION get_circleID 
( v_circle_code  vf_circle.circle_code%TYPE)
RETURN vf_circle.circle_id%TYPE
IS
    return_value  vf_circle.circle_id%TYPE; 
BEGIN
    BEGIN
        SELECT circle_id INTO return_value
        FROM vf_circle
        WHERE circle_code = v_circle_code;
   END;
   RETURN return_value;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20102, 'Circle Code is wrong or not available',TRUE);
END get_circleID;
/
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-05 19:08:15

我觉得有些人在错误/异常处理中请求更少的信息有点奇怪。我通常会尽可能多地在那里转储堆栈跟踪(越多越好!)但也许你是在一个有正当理由的环境下工作。

你在找这样的例子吗?

代码语言:javascript
运行
复制
-- exception types and related error codes encapsulated 
-- into an application specific package
create or replace package expkg is
  dummy_not_found constant number := -20102;
  dummy_not_found_ex exception;
  -- numeric literal required
  pragma exception_init (dummy_not_found_ex, -20102);
  -- helper to hide a bit esoteric string handling
  -- call only in exception handler !
  function get_exception_text return varchar2;
end;
/

create or replace package body expkg is
  function get_exception_text return varchar2 is
  begin
    -- returns only the first line of a multiline string
    return regexp_substr(sqlerrm, '^.+$', 1, 1, 'm');
  end;
end;
/

begin
  declare
    v_dummy dual.dummy%type;
  begin
    select dummy into v_dummy from dual where dummy = 'A';
  exception
    -- convert exception type
    when no_data_found then
      raise_application_error(expkg.dummy_not_found, 'Not A dummy !', true);
  end;
exception
  when expkg.dummy_not_found_ex then
    -- DIY if the default format doesn't fit 
    dbms_output.put_line(expkg.get_exception_text);
end;
/

输出:

代码语言:javascript
运行
复制
ORA-20102: Not A dummy !
票数 2
EN

Stack Overflow用户

发布于 2013-08-05 17:34:51

我认为您需要定义Pragma异常init来定义下面用户定义的消息和错误number.like。

代码语言:javascript
运行
复制
    pragma exception_init( Message, Number );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18058352

复制
相关文章

相似问题

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