DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_SOA_UTIL

Source


1 package body fnd_soa_util as
2 /* $Header: FNDSOAUB.pls 120.1 2008/05/15 06:15:09 rajarram noship $ */
3 
4 /* Purge Function to delete all Data */
5 procedure delete_by_date_cp(   errbuf out NOCOPY varchar2,
6                                retcode out NOCOPY varchar2,
7                                start_date in  varchar2,
8                                end_date in  varchar2 ) is
9         v_strt_date DATE;
10         v_end_date DATE;
11         deleted_requests_count NUMBER;
12         deleted_response_count NUMBER;
13         deleted_method_count NUMBER;
14 	deleted_att_count NUMBER;
15 
16 
17 begin
18 
19   v_strt_date := trunc(FND_CONC_DATE.STRING_TO_DATE(start_date),'DD');
20   v_end_date :=trunc( FND_CONC_DATE.STRING_TO_DATE(end_date),'DD');
21   IF(v_strt_date is NULL) then
22      errbuf := 'Unexpected error converting character string to date:'
23                    ||start_date;
24      retcode := '2';
25      FND_FILE.put_line(FND_FILE.log,errbuf);
26      RETURN;
27   END IF;
28   IF(v_end_date is NULL) then
29      errbuf := 'Unexpected error converting character string to date:'
30                    ||end_date;
31      retcode := '2';
32      FND_FILE.put_line(FND_FILE.log,errbuf);
33      RETURN;
34   END IF;
35 
36   /* Purge Function to delete all requests Data */
37   deleted_requests_count :=
38 delete_requests_by_date_range(v_strt_date,v_end_date);
39   /* Purge Function to delete all response Data */
40   deleted_response_count :=
41 delete_responses_by_date_range(v_strt_date,v_end_date);
42   /* Purge Function to delete all method Data */
43   deleted_method_count := delete_method_by_date_range(v_strt_date,v_end_date);
44   /* Purge Function to delete all attachment Data */
45   deleted_att_count := delete_att_by_date_range(v_strt_date,v_end_date);
46   /* Purge Function to delete all attachment body Data */
47   deleted_att_count := delete_body_by_date_range(v_strt_date,v_end_date);
48 
49 
50 end delete_by_date_cp;
51 
52 
53 /* Purge Function to delete all requests Data */
54 FUNCTION delete_requests_by_date_range(
55          x_start_date IN DATE,
56          x_end_date IN DATE) return NUMBER is
57   rowcount number := 0;
58   temp_rowcount number := 0;
59 BEGIN
60 
61   LOOP
62     BEGIN
63 
64     DELETE
65       FROM  FND_SOA_REQUEST
66       WHERE message_id IN
67 	(SELECT WR.message_id
68 	FROM
69 	FND_SOA_REQUEST    WR
70 	WHERE
71 	(x_start_date IS NOT NULL and x_end_date IS NOT NULL)
72 	AND  x_start_date<= trunc(WR.request_timestamp,'DD')
73 	AND  x_end_date>= trunc(WR.request_timestamp,'DD')
74 	)
75 	AND rownum <= 1000;
76       temp_rowcount := SQL%ROWCOUNT;
77       COMMIT;
78       rowcount := rowcount + temp_rowcount;
79       EXIT WHEN (temp_rowcount = 0);
80     EXCEPTION
81       WHEN NO_DATA_FOUND THEN
82         NULL; /* Should never happen */
83       WHEN OTHERS THEN
84         IF ((SQLCODE = 60) or (SQLCODE = 4020)) then
85           NULL;  /* Ignore rows that are deadlocked */
86         ELSE
87           RAISE;
88         END IF;
89     END;
90 
91   END LOOP;
92   fnd_file.put_line(fnd_file.output,'Deleted '|| rowcount ||' rows from
93 FND_SOA_REQUEST ');
94   RETURN rowcount;
95 END;
96 
97 
98 
99 /* Purge Function to delete all response Data */
100 FUNCTION delete_responses_by_date_range(
101          x_start_date IN DATE,
102          x_end_date IN DATE) return NUMBER is
103   rowcount number := 0;
104   temp_rowcount number := 0;
105 BEGIN
106   LOOP
107     BEGIN
108 
109     DELETE
110       FROM  FND_SOA_RESPONSE
111       WHERE message_id IN
112 	(SELECT WR.message_id
113 	FROM
114 	FND_SOA_RESPONSE    WR
115 	WHERE
116 	(x_start_date IS NOT NULL and x_end_date IS NOT NULL)
117 	AND  x_start_date <= trunc(WR.response_timestamp,'DD')
118 	AND  x_end_date >= trunc(WR.response_timestamp,'DD')
119 	)
120 	AND rownum <= 1000;
121 
122 
123       temp_rowcount := SQL%ROWCOUNT;
124       COMMIT;
125       rowcount := rowcount + temp_rowcount;
126       EXIT WHEN (temp_rowcount = 0);
127     EXCEPTION
128       WHEN NO_DATA_FOUND THEN
129         NULL; /* Should never happen */
130       WHEN OTHERS THEN
131         IF ((SQLCODE = 60) or (SQLCODE = 4020)) then
132           NULL;  /* Ignore rows that are deadlocked */
133         ELSE
134           RAISE;
135         END IF;
136     END;
137 
138   END LOOP;
139   fnd_file.put_line(fnd_file.output,'Deleted '|| rowcount ||' rows from
140 FND_SOA_RESPONSE ');
141   RETURN rowcount;
142 END;
143 
144 /* Purge Function to delete all method Data */
145 FUNCTION delete_method_by_date_range(
146          x_start_date IN DATE,
147          x_end_date IN DATE) return NUMBER is
148   rowcount number := 0;
149   temp_rowcount number := 0;
150 BEGIN
151   LOOP
152     BEGIN
153 
154 	DELETE
155 	FROM FND_SOA_RESPONSE_METHOD
156 	WHERE
157 	message_id NOT  IN
158 	(SELECT message_id
159 	FROM
160 	FND_SOA_RESPONSE)
161 	AND rownum <= 1000;
162 
163       temp_rowcount := SQL%ROWCOUNT;
164       COMMIT;
165       rowcount := rowcount + temp_rowcount;
166       EXIT WHEN (temp_rowcount = 0);
167     EXCEPTION
168       WHEN NO_DATA_FOUND THEN
169         NULL; /* Should never happen */
170       WHEN OTHERS THEN
171         IF ((SQLCODE = 60) or (SQLCODE = 4020)) then
172           NULL;  /* Ignore rows that are deadlocked */
173         ELSE
174           RAISE;
175         END IF;
176     END;
177 
178   END LOOP;
179   fnd_file.put_line(fnd_file.output,
180 			'Deleted '|| rowcount ||' rows from
181 FND_SOA_RESPONSE_METHOD ');
182   RETURN rowcount;
183 END;
184 
185 /* Purge Function to delete all attachment Data */
186 FUNCTION delete_att_by_date_range(
187          x_start_date IN DATE,
188          x_end_date IN DATE) return NUMBER is
189   rowcount number := 0;
190   temp_rowcount number := 0;
191 BEGIN
192   LOOP
193     BEGIN
194 
195 	DELETE
196 	FROM FND_SOA_ATTACHMENT WA
197 	WHERE
198 	((WA.BELONGS_TO='REQUEST' AND  message_id NOT  IN
199 	(SELECT message_id
200 	FROM
201 	FND_SOA_REQUEST))
202 	OR
203 	(WA.BELONGS_TO='RESPONSE' AND  message_id NOT  IN
204 	(SELECT message_id
205 	FROM
206 	FND_SOA_RESPONSE)))
207 	AND rownum <= 1000;
208 
209       temp_rowcount := SQL%ROWCOUNT;
210       COMMIT;
211       rowcount := rowcount + temp_rowcount;
212       EXIT WHEN (temp_rowcount = 0);
213     EXCEPTION
214       WHEN NO_DATA_FOUND THEN
215         NULL; /* Should never happen */
216       WHEN OTHERS THEN
217         IF ((SQLCODE = 60) or (SQLCODE = 4020)) then
218           NULL;  /* Ignore rows that are deadlocked */
219         ELSE
220           RAISE;
221         END IF;
222     END;
223 
224   END LOOP;
225   fnd_file.put_line(fnd_file.output,
226 			'Deleted '|| rowcount ||' rows from FND_SOA_ATTACHMENT
227 ');
228   RETURN rowcount;
229 END;
230 
231 
232 /* Purge Function to delete all attachment body Data */
233 FUNCTION delete_body_by_date_range(
234          x_start_date IN DATE,
235          x_end_date IN DATE) return NUMBER is
236   rowcount number := 0;
237   temp_rowcount number := 0;
238 BEGIN
239   LOOP
240     BEGIN
241 
242 	DELETE
243 	FROM FND_SOA_BODY_PIECE WP
244 	WHERE
245 	((WP.BELONGS_TO='REQUEST' AND  message_id NOT  IN
246 	(SELECT message_id
247 	FROM
248 	FND_SOA_REQUEST))
249 	OR
250 	(WP.BELONGS_TO='RESPONSE' AND  message_id NOT  IN
251 	(SELECT message_id
252 	FROM
253 	FND_SOA_RESPONSE)))
254 	AND rownum <= 1000;
255 
256       temp_rowcount := SQL%ROWCOUNT;
257       COMMIT;
258       rowcount := rowcount + temp_rowcount;
259       EXIT WHEN (temp_rowcount = 0);
260     EXCEPTION
261       WHEN NO_DATA_FOUND THEN
262         NULL; /* Should never happen */
263       WHEN OTHERS THEN
264         IF ((SQLCODE = 60) or (SQLCODE = 4020)) then
265           NULL;  /* Ignore rows that are deadlocked */
266         ELSE
267           RAISE;
268         END IF;
269     END;
270 
271   END LOOP;
272   fnd_file.put_line(fnd_file.output,
273 			'Deleted '|| rowcount ||' rows from FND_SOA_BODY_PIECE
274 ');
275   RETURN rowcount;
276 END;
277 
278 
279 
280 end  fnd_soa_util;