Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: How to get current program line number in exception?
Because these refer to lines 13 and 29, when the error itself occurred
at line 10. Note: 13 is the "format_call_stack" line and 29 is the
"raise".
Richard
"Jaap W. van Dijk" wrote:
>
> Why is it not correct? From an old posting in this newsgroup
> (1999/10/25):
>
> create or replace package x as
> procedure x1;
> procedure x2;
> end;
> /
>
> create or replace package body x as
> procedure x1 is
> begin
> x.x2;
> end;
> procedure x2 is
> vx varchar2(4000);
> vz varchar2(4000);
> begin
> raise_application_error(-20000,'Erreur',true);
> exception when others then
> vx := dbms_utility.format_Error_stack;
> vz := dbms_utility.format_call_stack;
> dbms_output.put_line('ERROR');
> dbms_output.put_line('----Error stack----');
> if vx is null then
> dbms_output.put_line('vx is empty');
> else
> dbms_output.put_line('vx length is '||length(vx));
> end if;
> dbms_output.put_line(vx);
> dbms_output.put_line('----Call stack----');
> if vz is null then
> dbms_output.put_line('vz is empty');
> else
> dbms_output.put_line('vz length is '||length(vz));
> end if;
> dbms_output.put_line(vz);
> raise;
> end;
> end;
> /
>
> set serveroutput on size 20000
>
> begin
> x.x1;
> end;
> /
> ERROR
> ----Error stack----
> vx length is 18
> ORA-20000: Erreur
>
> ----Call stack----
> vz length is 210
> ----- PL/SQL Call Stack -----
> object line object
> handle number name
> c4a0d2b8 13 package body NTC_ADMIN2.X
> c4a0d2b8 4 package body NTC_ADMIN2.X
> c5007168 2 anonymous block
>
> begin
> *
> ERROR at line 1:
> ORA-20000: Erreur
> ORA-06512: at "NTC_ADMIN2.X", line 29
> ORA-06512: at "NTC_ADMIN2.X", line 4
> ORA-06512: at line 2
>
> SQL>
>
> Nice, isn't it?
>
> Jaap.
>
> On Wed, 24 Apr 2002 17:31:05 +0400, "Vasily Poushko"
> <vasily_at_genesyslab.ru> wrote:
>
> >Your answer is not correct.
> >Please check it by yourself.
> >
> >"Sunil" <sunil_franklin_at_hotmail.com> wrote in message
> >news:diyx8.4$Cv2.110_at_news.oracle.com...
> >> Will 'format_call_stack' help. It gives you the line number .
> >>
> >>
> >>
> >>
> >> "Vasily Poushko" <vasily_at_genesyslab.ru> wrote in message
> >> news:aa6aar$hgi$1_at_octopus.co.ru...
> >> > How to get current program line number in exception?
> >> >
> >> > Hello. I'd like to get current program line number, where raised
> >> exception.
> >> >
> >> > My code is:
> >> > create or replace procedure qqq
> >> > as
> >> > n varchar2(1) := '12';
> >> > begin
> >> > null;
> >> > exception when others
> >> > dbms_out.put_line(sqlerrm);
> >> > end;
> >> > /
> >> >
> >> > execute qqq;
> >> >
> >> > output will be:
> >> > ORA-06502: PL/SQL: numeric or value error: character string buffer too
> >> small
> >> >
> >> > but I would like to get:
> >> > ORA-06502: PL/SQL: numeric or value error: character string buffer too
> >> small
> >> > ORA-06512: at "SCOTT.QQQ", line 2
> >> > ORA-06512: at line 2
> >> >
> >> > How can I do this?
> >> >
> >> >
> >> >
> >>
> >>
> >
> >
Received on Wed Apr 24 2002 - 16:10:08 CDT
![]() |
![]() |