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?
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 - 15:59:24 CDT