Re: PL/SQL exceptions handling help
- From: "Arul Ramachandran" <contactarul@xxxxxxxxx>
- To: tomdaytwo@xxxxxxxxx
- Date: Fri, 30 Mar 2007 08:04:47 -0700
I spent only a minute looking at this. So I may be wrong on this.
12 need_complete_refresh exception;
13 need_complete_refresh CONSTANT INTEGER := -12035;
need_complete_refresh is first declared as an exception, then that
declaration is over-written by declaring it as CONSTANT INTEGER.
Try removing line# 13 to see if it helps.
Regards,
Arul
On 3/29/07, Thomas Day <tomdaytwo@xxxxxxxxx> wrote:
I've spent all morning R'ing the FMs and looking up examples and I still
can't get my PL/Sql to handle my user-defined exception. Obviously I'm
missing something that is clear as a bell to all the people who post these
examples. Any idea what it is?
Oracle 9i on AIX
SQL> l
1 create or replace
2 procedure refresh_snapshot (mv_id IN varchar2) is
3 ERR_NUM NUMBER:=0;
4 ERR_MSG VARCHAR2(100):=null;
5 v_owner varchar2(100):=null;
6 v_mview varchar2(100):=null;
7 sql_stmt varchar2(200):=null;
8 v_action varchar2(1):='F';
9 BEGIN
10 select username into v_owner from user_users;
11 DECLARE
12 need_complete_refresh exception;
13 need_complete_refresh CONSTANT INTEGER := -12035;
14
15 pragma exception_init(need_complete_refresh,-12035);
16 Cursor V_SNAPSHOTS is
17 select name from user_snapshots;
18 BEGIN
19 Open V_SNAPSHOTS;
20 LOOP
21 FETCH V_SNAPSHOTS INTO v_mview;
22 EXIT WHEN V_SNAPSHOTS%NOTFOUND;
23 DBMS_SNAPSHOT.REFRESH('||v_owner||.||v_mview||','||v_action||');
24
sql_stmt:='DBMS_SNAPSHOT.REFRESH('||v_owner||'.'||v_mview||','||v_action||');';
25 END LOOP;
26 CLOSE V_SNAPSHOTS;
27 END;
28 EXCEPTION WHEN need_complete_refresh then v_action:='C';
29 DBMS_SNAPSHOT.REFRESH('||v_owner||.||v_mview||','||v_action||');
30
sql_stmt:='DBMS_SNAPSHOT.REFRESH('||v_owner||'.'||v_mview||','||v_action||');';
31 -- EXCEPTION
32 WHEN OTHERS THEN
33 err_num := SQLCODE;
34 err_msg := SUBSTR(SQLERRM, 1, 100);
35 DBMS_OUTPUT.PUT_LINE (sql_stmt);
36 DBMS_OUTPUT.PUT_LINE (ERR_NUM||' '||ERR_MSG||' snapshot is '||mv_ID);
37* END refresh_snapshot;
SQL> sho errors
Errors for PROCEDURE REFRESH_SNAPSHOT:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 PL/SQL: Compilation unit analysis terminated
12/2 PLS-00704: 'NEED_COMPLETE_REFRESH' must be declared as an
exception
14/3 PL/SQL: Item ignored
27/20 PLS-00201: identifier 'NEED_COMPLETE_REFRESH' must be declared
SQL>
--
Arul
- Follow-Ups:
- Re: PL/SQL exceptions handling help
- From: Thomas Day
- References:
- PL/SQL exceptions handling help
- From: Thomas Day
Other related posts:
I've spent all morning R'ing the FMs and looking up examples and I still
can't get my PL/Sql to handle my user-defined exception. Obviously I'm
missing something that is clear as a bell to all the people who post these
examples. Any idea what it is?
Oracle 9i on AIX
SQL> l
1 create or replace
2 procedure refresh_snapshot (mv_id IN varchar2) is
3 ERR_NUM NUMBER:=0;
4 ERR_MSG VARCHAR2(100):=null;
5 v_owner varchar2(100):=null;
6 v_mview varchar2(100):=null;
7 sql_stmt varchar2(200):=null;
8 v_action varchar2(1):='F';
9 BEGIN
10 select username into v_owner from user_users;
11 DECLARE
12 need_complete_refresh exception;
13 need_complete_refresh CONSTANT INTEGER := -12035;
14
15 pragma exception_init(need_complete_refresh,-12035);
16 Cursor V_SNAPSHOTS is
17 select name from user_snapshots;
18 BEGIN
19 Open V_SNAPSHOTS;
20 LOOP
21 FETCH V_SNAPSHOTS INTO v_mview;
22 EXIT WHEN V_SNAPSHOTS%NOTFOUND;
23 DBMS_SNAPSHOT.REFRESH('||v_owner||.||v_mview||','||v_action||');
24
sql_stmt:='DBMS_SNAPSHOT.REFRESH('||v_owner||'.'||v_mview||','||v_action||');';
25 END LOOP;
26 CLOSE V_SNAPSHOTS;
27 END;
28 EXCEPTION WHEN need_complete_refresh then v_action:='C';
29 DBMS_SNAPSHOT.REFRESH('||v_owner||.||v_mview||','||v_action||');
30
sql_stmt:='DBMS_SNAPSHOT.REFRESH('||v_owner||'.'||v_mview||','||v_action||');';
31 -- EXCEPTION
32 WHEN OTHERS THEN
33 err_num := SQLCODE;
34 err_msg := SUBSTR(SQLERRM, 1, 100);
35 DBMS_OUTPUT.PUT_LINE (sql_stmt);
36 DBMS_OUTPUT.PUT_LINE (ERR_NUM||' '||ERR_MSG||' snapshot is '||mv_ID);
37* END refresh_snapshot;
SQL> sho errors
Errors for PROCEDURE REFRESH_SNAPSHOT:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 PL/SQL: Compilation unit analysis terminated
12/2 PLS-00704: 'NEED_COMPLETE_REFRESH' must be declared as an
exception
14/3 PL/SQL: Item ignored
27/20 PLS-00201: identifier 'NEED_COMPLETE_REFRESH' must be declared
SQL>
- Re: PL/SQL exceptions handling help
- From: Thomas Day
- PL/SQL exceptions handling help
- From: Thomas Day