DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_CG$ERRORS

Source


1 PACKAGE BODY XNP_cg$errors AS
2 /* $Header: XNPCDSAB.pls 120.2 2006/02/13 07:41:41 dputhiye ship $ */
3 
4    cg$err_msg      cg$err_msg_t;
5    cg$err_error    cg$err_error_t;
6    cg$err_msg_type cg$err_msg_type_t;
7    cg$err_msgid    cg$err_msgid_t;
8    cg$err_loc      cg$err_loc_t;
9 
10    -----------------------------------------------------------------------------
11    -- Name:        get_errors
12    -- Description: Pops all messages off the stack and returns them in the order
13    --              in which they were raised.
14    -- Parameters:  none
15    -- Returns:     The messages
16    -----------------------------------------------------------------------------
17    FUNCTION GetErrors
18          return varchar2  is
19       I_ERROR_MESS  varchar2(2000):='';
20       I_NEXT_MESS   varchar2(240):='';
21    BEGIN
22      while XNP_cg$errors.pop(I_NEXT_MESS) loop
23        if I_ERROR_MESS is null then
24           I_ERROR_MESS := I_NEXT_MESS;
25        else
26           I_ERROR_MESS := I_NEXT_MESS || '
27    ' || I_ERROR_MESS;
28        end if;
29      end loop;
30      return (I_ERROR_MESS);
31    END;
32 
33    --------------------------------------------------------------------------------
34    -- Name:        raise_failure
35    --
36    -- Description: To raise the XNP_cg$error failure exception handler
37    --------------------------------------------------------------------------------
38    PROCEDURE raise_failure IS
39    BEGIN
40 
41        raise XNP_cg$errors.cg$error;
42 
43    END raise_failure;
44 
45    --------------------------------------------------------------------------------
46    -- Name:        parse_constraint
47    -- Description: Isolate constraint name from an Oracle error message
48    -- Parameters:  msg     The actual Oracle error message
49    --              type    type of constraint to find
50    --                      (ERR_FOREIGN_KEY     Foreign key,
51    --                       ERR_CHECK_CON       Check,
52    --                       ERR_UNIQUE_KEY      Unique key,
53    --                       ERR_DELETE_RESTRICT Restricted delete)
54    -- Returns:     con_name Constraint found (NULL if none found)
55    --------------------------------------------------------------------------------
56    FUNCTION parse_constraint(msg   IN VARCHAR2
57                             ,type  IN INTEGER)
58            RETURN VARCHAR2 IS
59    con_name    VARCHAR2(100) := '';
60    BEGIN
61 
62        IF (type = ERR_FOREIGN_KEY	OR
63            type = ERR_CHECK_CON	OR
64            type = ERR_UNIQUE_KEY	OR
65            type = ERR_DELETE_RESTRICT) THEN
66            con_name := substr(msg, instr(msg, '.') + 1, instr(msg, ')') - instr(msg, '.') - 1);
67        END IF;
68 
69        return con_name;
70    END;
71 
72    --------------------------------------------------------------------------------
73    -- Name:        push
74    --
75    -- Description: Put a message on stack with full info
76    --
77    -- Parameters:  msg      Text message
78    --              error    ERRor or WARNing
79    --              msg_type ORA, API or user TLA
80    --              msg_id   Id of message
81    --              loc      Location where error occured
82    --------------------------------------------------------------------------------
83    PROCEDURE push(msg      IN VARCHAR2
84                  ,error    IN VARCHAR2  DEFAULT 'E'
85                  ,msg_type IN VARCHAR2  DEFAULT ''
86                  ,msgid    IN INTEGER   DEFAULT 0
87                  ,loc      IN VARCHAR2  DEFAULT '') IS
88    BEGIN
89 
90        cg$err_msg(cg$err_tab_i)        := msg;
91        cg$err_error(cg$err_tab_i)      := error;
92        cg$err_msg_type(cg$err_tab_i)   := msg_type;
93        cg$err_msgid(cg$err_tab_i)      := msgid;
94        cg$err_loc(cg$err_tab_i)        := loc;
95        cg$err_tab_i                    := cg$err_tab_i + 1;
96 
97    END push;
98 
99    --------------------------------------------------------------------------------
100    -- Name:        pop
101    -- Description: Take a message off stack
102    -- Parameters:  msg     Text message
103    -- Returns:     TRUE    Message popped successfully
104    --              FALSE   Stack was empty
105    --------------------------------------------------------------------------------
106    FUNCTION pop(msg OUT NOCOPY VARCHAR2)
107        RETURN BOOLEAN IS
108    BEGIN
109 
110        IF (cg$err_tab_i > 1 AND cg$err_msg(cg$err_tab_i - 1) IS NOT NULL) THEN
111            cg$err_tab_i := cg$err_tab_i - 1;
112            msg          := cg$err_msg(cg$err_tab_i);
113            cg$err_msg(cg$err_tab_i) := '';
114            return TRUE;
115        ELSE
116            return FALSE;
117        END IF;
118 
119    END pop;
120 
121    --------------------------------------------------------------------------------
122    -- Name:        pop (overload)
123    -- Description: Take a message off stack with full info
124    -- Parameters:  msg      Ttext message
125    --              error    ERRor or WARNing
126    --              msg_type ORA, API or user TLA
127    --              msg_id   Id of message
128    --              loc      Location where error occured
129    -- Returns:     TRUE     Message popped successfully
130    --              FALSE    Stack was empty
131    --------------------------------------------------------------------------------
132    FUNCTION pop(msg        OUT NOCOPY VARCHAR2
133                ,error      OUT NOCOPY VARCHAR2
134                ,msg_type   OUT NOCOPY VARCHAR2
135                ,msgid      OUT NOCOPY INTEGER
136                ,loc        OUT NOCOPY VARCHAR2)
137            RETURN BOOLEAN IS
138    BEGIN
139 
140        IF (cg$err_tab_i > 1 AND cg$err_msg(cg$err_tab_i - 1) IS NOT NULL) THEN
141            cg$err_tab_i := cg$err_tab_i - 1;
142            msg          := cg$err_msg(cg$err_tab_i);
143            cg$err_msg(cg$err_tab_i) := '';
144            error        := cg$err_error(cg$err_tab_i);
145            msg_type     := cg$err_msg_type(cg$err_tab_i);
146            msgid        := cg$err_msgid(cg$err_tab_i);
147            loc          := cg$err_loc(cg$err_tab_i);
148            return TRUE;
149        ELSE
150            return FALSE;
151        END IF;
152 
153    END pop;
154 
155    --------------------------------------------------------------------------------
156    -- Name:        clear
157    -- Description: Clears the stack
158    -- Parameters:  none
159    --------------------------------------------------------------------------------
160    PROCEDURE clear IS
161    BEGIN
162 
163        cg$err_tab_i := 1;
164 
165    END clear;
166 
167    --------------------------------------------------------------------------------
168    -- Name:        MsgGetText
169    -- Description: Provides a mechanism for text translation.
170    -- Parameters:  p_MsgNo    The Id of the message
171    --              p_DfltText The Default Text
172    --              p_Subst1 (to 4) Substitution strings
173    --              p_LangId   The Language ID
174    -- Returns:		Translated message
175    --------------------------------------------------------------------------------
176    FUNCTION MsgGetText(p_MsgNo in number
177                       ,p_DfltText in varchar2
178                       ,p_Subst1 in varchar2
179                       ,p_Subst2 in varchar2
180                       ,p_Subst3 in varchar2
181                       ,p_Subst4 in varchar2
182                       ,p_LangId in number)
183             RETURN varchar2 IS
184       l_temp varchar2(10000) := p_DfltText;
185    BEGIN
186 
187       l_temp := replace(l_temp, '<p>',  p_Subst1);
188       l_temp := replace(l_temp, '<p1>', p_Subst1);
189       l_temp := replace(l_temp, '<p2>', p_Subst2);
190       l_temp := replace(l_temp, '<p3>', p_Subst3);
191       l_temp := replace(l_temp, '<p4>', p_Subst4);
192 
193       return l_temp;
194 
195    END MsgGetText;
196 
197 END XNP_cg$errors;