[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;