[Home] [Help]
PACKAGE BODY: APPS.ICX_POR_DELETE_CATALOG
Source
1 PACKAGE BODY ICX_POR_DELETE_CATALOG AS
2 /* $Header: ICXDELCB.pls 115.7 2004/06/10 10:43:56 sosingha ship $*/
3
4
5 /**
6 ** Global varibles
7 **/
8 gReturnError VARCHAR2(4000) := NULL;
9 gCommitSize NUMBER := 2000;
10
11 -- ORA-01555: snapshot too old: rollback segment number with name "" too small
12 snap_shot_too_old EXCEPTION;
13 PRAGMA EXCEPTION_INIT(snap_shot_too_old, -1555);
14
15 PROCEDURE setCommitSize(pCommitSize IN PLS_INTEGER) IS
16 BEGIN
17 gCommitSize := pCommitSize;
18 END setCommitSize;
19
20 /**
21 ** Proc : delete_items_in_category
22 ** Procedure called when a category is deleted from ecmanager.
23 ** Desc : Deletes the items and prices in the category id specified
24 ** Deletes the category related info from icx_cat_browse_trees,
25 ** icx_por_category_data_sources, icx_por_category_order_map
26 **/
27 PROCEDURE delete_items_in_category (
28 errbuf OUT NOCOPY VARCHAR2,
29 retcode OUT NOCOPY VARCHAR2,
30 p_rt_category_id IN NUMBER,
31 p_category_key IN VARCHAR2)
32 IS
33 BEGIN
34 retcode := 0;
35 errbuf := '';
36
37 delete_items_in_category(p_rt_category_id, p_category_key);
38
39 EXCEPTION
40 WHEN OTHERS THEN
41 retcode := 2;
42 errbuf := SQLERRM;
43 raise;
44 END delete_items_in_category;
45
46 /**
47 ** Proc : delete_items_in_category
48 ** Procedure called when a category is deleted from ecmanager.
49 ** Desc : Deletes the items and prices in the category id specified
50 ** Deletes the category related info from icx_cat_browse_trees,
51 ** icx_por_category_data_sources, icx_por_category_order_map
52 **/
53 PROCEDURE delete_items_in_category (p_rt_category_id IN NUMBER,
54 p_category_key IN VARCHAR2)
55 IS
56 --TYPE CursorType IS REF CURSOR;
57 --item_cursor CursorType;
58
59 CURSOR item_cursor(c_rt_category_id IN NUMBER) IS
60 SELECT rt_item_id
61 FROM icx_cat_category_items
62 WHERE rt_category_id = c_rt_category_id;
63
64 l_rt_item_ids DBMS_SQL.NUMBER_TABLE;
65
66 xCommitSize PLS_INTEGER := 2000;
67 xErrLoc PLS_INTEGER := 0;
68 BEGIN
69
70 -- Set Log level to NOLOG_LEVEL, so no log file will be generated for ECManager
71 --ICX_POR_EXT_UTL.setDebugLevel(ICX_POR_EXT_UTL.NOLOG_LEVEL);
72
73 -- Set commit size
74 xErrLoc := 100;
75 fnd_profile.get('POR_LOAD_PURGE_COMMIT_SIZE', xCommitSize);
76 setCommitSize(xCommitSize);
77
78 xErrLoc := 120;
79 OPEN item_cursor(p_rt_category_id);
80
81 xErrLoc := 150;
82 LOOP
83 xErrLoc := 200;
84 BEGIN
85 FETCH item_cursor
86 BULK COLLECT INTO l_rt_item_ids
87 LIMIT gCommitSize;
88
89 EXIT WHEN l_rt_item_ids.COUNT = 0;
90
91 xErrLoc := 240;
92 deleteCommonTables(l_rt_item_ids, CATITEM_TABLE_LAST);
93 commit;
94 l_rt_item_ids.DELETE;
95
96 xErrLoc := 300;
97 EXCEPTION
98 WHEN snap_shot_too_old THEN
99 ICX_POR_EXT_UTL.debug(ICX_POR_EXT_UTL.MUST_LEVEL,
100 'ORA-01555: snapshot too old: caught at '||
101 'ICX_POR_DELETE_CATALOG.delete_items_in_category(' || xErrLoc|| ')'|| ', sqlerrm:' ||sqlerrm ||
102 '; so close the cursor and reopen the cursor-');
103 xErrLoc := 400;
104 COMMIT;
105 IF (item_cursor%ISOPEN) THEN
106 xErrLoc := 500;
107 CLOSE item_cursor;
108 xErrLoc := 600;
109 OPEN item_cursor(p_rt_category_id);
110 END IF;
111 END;
112 END LOOP;
113
114 xErrLoc := 700;
115 deleteCategoryRelatedInfo(p_rt_category_id, p_category_key);
116 commit;
117
118 xErrLoc := 800;
119 IF (item_cursor%ISOPEN) THEN
120 CLOSE item_cursor;
121 END IF;
122
123 EXCEPTION
124 WHEN OTHERS THEN
125 gReturnError := gReturnError ||
126 'ICX_POR_DELETE_CATALOG.delete_items_in_category(' ||
127 xErrLoc|| '): '||sqlerrm;
128 raise_application_error(-20000,gReturnError);
129 END delete_items_in_category;
130
131 /**
132 ** Proc : delete_items_in_catalog
133 ** Desc : Deletes the items and prices in the catalog name specified
134 **/
135 PROCEDURE delete_items_in_catalog (p_catalog_name IN VARCHAR2)
136 IS
137 --TYPE CursorType IS REF CURSOR;
138 --item_cursor CursorType;
139
140 CURSOR item_cursor(c_catalog_name IN VARCHAR2) IS
141 SELECT rt_item_id
142 FROM icx_cat_items_b
143 WHERE catalog_name = c_catalog_name
144 AND extractor_updated_flag = 'N';
145
146 l_rt_item_ids DBMS_SQL.NUMBER_TABLE;
147
148 xCommitSize PLS_INTEGER := 2000;
149 xErrLoc PLS_INTEGER := 0;
150 BEGIN
151
152 -- Set Log level to NOLOG_LEVEL, so no log file will be generated for ECManager
153 --ICX_POR_EXT_UTL.setDebugLevel(ICX_POR_EXT_UTL.NOLOG_LEVEL);
154
155 -- Set commit size
156 xErrLoc := 100;
157 fnd_profile.get('POR_LOAD_PURGE_COMMIT_SIZE', xCommitSize);
158 setCommitSize(xCommitSize);
159
160 xErrLoc := 120;
161 open item_cursor(p_catalog_name);
162
163 xErrLoc := 150;
164 LOOP
165 xErrLoc := 200;
166 BEGIN
167 FETCH item_cursor
168 BULK COLLECT INTO l_rt_item_ids
169 LIMIT gCommitSize;
170
171 EXIT WHEN l_rt_item_ids.COUNT = 0;
172
173 xErrLoc := 240;
174 deleteCommonTables(l_rt_item_ids);
175 commit;
176 l_rt_item_ids.DELETE;
177
178 xErrLoc := 400;
179 EXCEPTION
180 WHEN snap_shot_too_old THEN
181 ICX_POR_EXT_UTL.debug(ICX_POR_EXT_UTL.MUST_LEVEL,
182 'ORA-01555: snapshot too old: caught at '||
183 'ICX_POR_DELETE_CATALOG.delete_items_in_catalog(' || xErrLoc|| ')'||
184 ', sqlerrm:' ||sqlerrm ||
185 '; so close the cursor and reopen the cursor-');
186 xErrLoc := 500;
187 COMMIT;
188 IF (item_cursor%ISOPEN) THEN
189 xErrLoc := 600;
190 CLOSE item_cursor;
191 xErrLoc := 700;
192 OPEN item_cursor(p_catalog_name);
193 END IF;
194 END;
195
196 END LOOP;
197
198 IF (item_cursor%ISOPEN) THEN
199 CLOSE item_cursor;
200 END IF;
201
202 EXCEPTION
203 WHEN OTHERS THEN
204 gReturnError := gReturnError ||
205 'ICX_POR_DELETE_CATALOG.delete_items_in_catalog(' ||
206 xErrLoc|| '): '||sqlerrm;
207 raise_application_error(-20000,gReturnError);
208 END delete_items_in_catalog;
209
210 /**
211 ** Proc : delete_supplier_catalog_opUnit
212 ** Desc : Deletes the catalog for the supplier and Operating Unit specified.
213 **/
214 PROCEDURE delete_supplier_catalog_opUnit (p_supplier IN VARCHAR2,
215 p_operating_unit_id IN NUMBER DEFAULT -2)
216 IS
217 --TYPE CursorType IS REF CURSOR;
221 c_operating_unit_id IN NUMBER) IS
218 --item_cursor CursorType;
219
220 CURSOR item_cursor(c_supplier IN VARCHAR2,
222 SELECT rt_item_id
223 FROM icx_cat_items_b
224 WHERE supplier = c_supplier
225 AND org_id = c_operating_unit_id
226 AND extractor_updated_flag = 'N';
227
228 l_rt_item_ids DBMS_SQL.NUMBER_TABLE;
229
230 xCommitSize PLS_INTEGER := 2000;
231 xErrLoc PLS_INTEGER := 0;
232 BEGIN
233
234 -- Set Log level to NOLOG_LEVEL, so no log file will be generated for ECManager
235 --ICX_POR_EXT_UTL.setDebugLevel(ICX_POR_EXT_UTL.NOLOG_LEVEL);
236
237 -- Set commit size
238 xErrLoc := 100;
239 fnd_profile.get('POR_LOAD_PURGE_COMMIT_SIZE', xCommitSize);
240 setCommitSize(xCommitSize);
241
242 xErrLoc := 120;
243 OPEN item_cursor(p_supplier, p_operating_unit_id);
244
245 xErrLoc := 150;
246 LOOP
247 xErrLoc := 200;
248 BEGIN
249 FETCH item_cursor
250 BULK COLLECT INTO l_rt_item_ids
251 LIMIT gCommitSize;
252
253 EXIT WHEN l_rt_item_ids.COUNT = 0;
254
255 xErrLoc := 240;
256 deleteCommonTables(l_rt_item_ids);
257 commit;
258 l_rt_item_ids.DELETE;
259
260 xErrLoc := 400;
261 EXCEPTION
262 WHEN snap_shot_too_old THEN
263 ICX_POR_EXT_UTL.debug(ICX_POR_EXT_UTL.MUST_LEVEL,
264 'ORA-01555: snapshot too old: caught at '||
265 'ICX_POR_DELETE_CATALOG.delete_supplier_catalog_opUnit(' || xErrLoc|| ')'|| ', sqlerrm:' ||sqlerrm ||
266 '; so close the cursor and reopen the cursor-');
267 xErrLoc := 500;
268 COMMIT;
269 IF (item_cursor%ISOPEN) THEN
270 xErrLoc := 600;
271 CLOSE item_cursor;
272 xErrLoc := 700;
273 OPEN item_cursor(p_supplier, p_operating_unit_id);
274 END IF;
275 END;
276
277 END LOOP;
278 IF (item_cursor%ISOPEN) THEN
279 CLOSE item_cursor;
280 END IF;
281
282 EXCEPTION
283 WHEN OTHERS THEN
284 gReturnError := gReturnError ||
285 'ICX_POR_DELETE_CATALOG.delete_supplier_catalog_opUnit(' ||
286 xErrLoc|| '): '||sqlerrm;
287 raise_application_error(-20000,gReturnError);
288 END delete_supplier_catalog_opUnit;
289
290 /**
291 ** Proc : delPriceHistory
292 ** Desc : Deletes the data from ICX_CAT_PRICE_HISTORY
293 **/
294 PROCEDURE delPriceHistory(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
295 IS
296 xErrLoc PLS_INTEGER := 0;
297 xContinue BOOLEAN := TRUE;
298
299 BEGIN
300 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_PRICE_HISTORY');
301 xErrLoc := 100;
302 WHILE xContinue LOOP
303 FORALL i IN 1..pRtItemIds.COUNT
304 DELETE FROM icx_cat_price_history
305 WHERE rt_item_id = pRtItemIds(i)
306 AND rownum <= gCommitSize ;
307
308 xErrLoc := 200;
309 ICX_POR_EXT_UTL.extCommit;
310 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
311 xContinue := FALSE;
312 END IF;
313 END LOOP;
314 EXCEPTION
315 WHEN OTHERS THEN
316 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delPriceHistory-'||
317 xErrLoc||' '||SQLERRM);
318 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
319 pRtItemIds(SQL%ROWCOUNT+1));
320 ICX_POR_EXT_UTL.extRollback;
321 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delPriceHistory(' ||
322 xErrLoc|| '): '||sqlerrm;
323 raise_application_error(-20000,gReturnError);
324 END delPriceHistory;
325
326 /**
327 ** Proc : delItemsTLP
328 ** Desc : Deletes the data from ICX_CAT_ITEMS_TLP
329 **/
330 PROCEDURE delItemsTLP(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
331 IS
332 xErrLoc PLS_INTEGER := 0;
333 xContinue BOOLEAN := TRUE;
334
335 BEGIN
336 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_ITEMS_TLP');
337 xErrLoc := 100;
338 WHILE xContinue LOOP
339 FORALL i IN 1..pRtItemIds.COUNT
340 DELETE FROM icx_cat_items_tlp
341 WHERE rt_item_id = pRtItemIds(i)
342 AND rownum <= gCommitSize ;
343
344 xErrLoc := 200;
345 ICX_POR_EXT_UTL.extCommit;
346 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
347 xContinue := FALSE;
348 END IF;
349 END LOOP;
350 EXCEPTION
351 WHEN OTHERS THEN
352 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delItemsTLP-'||
353 xErrLoc||' '||SQLERRM);
354 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
355 pRtItemIds(SQL%ROWCOUNT+1));
356 ICX_POR_EXT_UTL.extRollback;
357 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delItemsTLP(' ||
358 xErrLoc|| '): '||sqlerrm;
359 raise_application_error(-20000,gReturnError);
360 END delItemsTLP;
361
362 /**
363 ** Proc : delExtItemsTLP
364 ** Desc : Deletes the data from ICX_CAT_EXT_ITEMS_TLP
365 **/
366 PROCEDURE delExtItemsTLP(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
367 IS
368 xErrLoc PLS_INTEGER := 0;
369 xContinue BOOLEAN := TRUE;
370
371 BEGIN
372 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_EXT_ITEMS_TLP');
373 xErrLoc := 100;
374 WHILE xContinue LOOP
375 FORALL i IN 1..pRtItemIds.COUNT
376 DELETE FROM icx_cat_ext_items_tlp
377 WHERE rt_item_id = pRtItemIds(i)
378 AND rownum <= gCommitSize ;
379
380 xErrLoc := 200;
381 ICX_POR_EXT_UTL.extCommit;
382 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
383 xContinue := FALSE;
384 END IF;
385 END LOOP;
386 EXCEPTION
387 WHEN OTHERS THEN
391 pRtItemIds(SQL%ROWCOUNT+1));
388 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delExtItemsTLP-'||
389 xErrLoc||' '||SQLERRM);
390 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
392 ICX_POR_EXT_UTL.extRollback;
393 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delExtItemsTLP(' ||
394 xErrLoc|| '): '||sqlerrm;
395 raise_application_error(-20000,gReturnError);
399 ** Proc : delItemsCtxTLP
396 END delExtItemsTLP;
397
398 /**
400 ** Desc : Deletes the data from ICX_CAT_ITEMS_CTX_TLP
401 **/
402 PROCEDURE delItemsCtxTLP(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
403 IS
404 xErrLoc PLS_INTEGER := 0;
405 xContinue BOOLEAN := TRUE;
406
407 BEGIN
408 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_ITEMS_CTX_TLP');
409 xErrLoc := 100;
410 WHILE xContinue LOOP
411 FORALL i IN 1..pRtItemIds.COUNT
412 DELETE FROM icx_cat_items_ctx_tlp
413 WHERE rt_item_id = pRtItemIds(i)
414 AND rownum <= gCommitSize ;
415
416 xErrLoc := 200;
417 ICX_POR_EXT_UTL.extCommit;
418 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
419 xContinue := FALSE;
420 END IF;
421 END LOOP;
422 EXCEPTION
423 WHEN OTHERS THEN
424 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delItemsCtxTLP-'||
425 xErrLoc||' '||SQLERRM);
426 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
427 pRtItemIds(SQL%ROWCOUNT+1));
428 ICX_POR_EXT_UTL.extRollback;
429 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delItemsCtxTLP(' ||
430 xErrLoc|| '): '||sqlerrm;
431 raise_application_error(-20000,gReturnError);
432 END delItemsCtxTLP;
433
434 /**
435 ** Proc : delFavoriteList
436 ** Desc : Deletes the data from POR_FAVORITE_LIST_LINES
437 **/
438 PROCEDURE delFavoriteList(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
439 IS
440 xErrLoc PLS_INTEGER := 0;
441 xContinue BOOLEAN := TRUE;
442
443 BEGIN
444 ICX_POR_EXT_UTL.debug('Delete from POR_FAVORITE_LIST_LINES');
445 xErrLoc := 100;
446 WHILE xContinue LOOP
447 FORALL i IN 1..pRtItemIds.COUNT
448 DELETE FROM por_favorite_list_lines
449 WHERE rt_item_id = pRtItemIds(i)
450 AND rownum <= gCommitSize ;
451
452 xErrLoc := 200;
453 ICX_POR_EXT_UTL.extCommit;
454 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
455 xContinue := FALSE;
456 END IF;
457 END LOOP;
458 EXCEPTION
459 WHEN OTHERS THEN
460 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delFavoriteList-'||
461 xErrLoc||' '||SQLERRM);
462 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
463 pRtItemIds(SQL%ROWCOUNT+1));
464 ICX_POR_EXT_UTL.extRollback;
465 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delFavoriteList(' ||
466 xErrLoc|| '): '||sqlerrm;
467 raise_application_error(-20000,gReturnError);
468 END delFavoriteList;
469
470 /**
471 ** Proc : delCategoryItems
472 ** Desc : Deletes the data from ICX_CAT_CATEGORY_ITEMS
473 **/
474 PROCEDURE delCategoryItems(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
475 IS
476 xErrLoc PLS_INTEGER := 0;
477 xContinue BOOLEAN := TRUE;
478
479 BEGIN
480 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_CATEGORY_ITEMS');
481 xErrLoc := 100;
482 WHILE xContinue LOOP
483 FORALL i IN 1..pRtItemIds.COUNT
484 DELETE FROM icx_cat_category_items
485 WHERE rt_item_id = pRtItemIds(i)
486 AND rownum <= gCommitSize ;
487
488 xErrLoc := 200;
489 ICX_POR_EXT_UTL.extCommit;
490 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
491 xContinue := FALSE;
492 END IF;
493 END LOOP;
494 EXCEPTION
495 WHEN OTHERS THEN
496 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delCategoryItems-'||
497 xErrLoc||' '||SQLERRM);
498 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
499 pRtItemIds(SQL%ROWCOUNT+1));
500 ICX_POR_EXT_UTL.extRollback;
501 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delCategoryItems(' ||
502 xErrLoc|| '): '||sqlerrm;
503 raise_application_error(-20000,gReturnError);
504 END delCategoryItems;
505
506 /**
507 ** Proc : delPriceLists
508 ** Desc : Deletes the data from ICX_CAT_PRICE_LISTS
509 **/
510 PROCEDURE delPriceLists(pPriceListIds IN DBMS_SQL.NUMBER_TABLE)
511 IS
512 xErrLoc PLS_INTEGER := 0;
513 BEGIN
514 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_PRICE_LISTS');
515 xErrLoc := 100;
516 FORALL i IN 1..pPriceListIds.COUNT
517 DELETE FROM icx_cat_price_lists pl
518 WHERE pl.price_list_id = pPriceListIds(i)
522 xErrLoc := 200;
519 AND NOT EXISTS (SELECT 'price line'
520 FROM icx_cat_item_prices p
521 WHERE p.price_list_id = pl.price_list_id);
523 ICX_POR_EXT_UTL.extCommit;
524 EXCEPTION
525 WHEN OTHERS THEN
526 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delPriceLists-'||
527 xErrLoc||' '||SQLERRM);
528 ICX_POR_EXT_UTL.pushError('Index: '|| SQL%ROWCOUNT+1);
529 ICX_POR_EXT_UTL.extRollback;
530 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delPriceLists(' ||
531 xErrLoc|| '): '||sqlerrm;
532 raise_application_error(-20000,gReturnError);
533 END delPriceLists;
534
535 /**
536 ** Proc : delItemPrices
537 ** Desc : Deletes the data from ICX_CAT_ITEM_PRICES
538 **/
539 PROCEDURE delItemPrices(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
540 IS
541 xErrLoc PLS_INTEGER := 0;
542 xContinue BOOLEAN := TRUE;
543 xPriceListIds DBMS_SQL.NUMBER_TABLE;
544
545 BEGIN
546 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_ITEM_PRICES');
547 xErrLoc := 100;
548 WHILE xContinue LOOP
549 xPriceListIds.DELETE;
550
551 xErrLoc := 140;
552 FORALL i IN 1..pRtItemIds.COUNT
553 DELETE FROM icx_cat_item_prices
554 WHERE rt_item_id = pRtItemIds(i)
555 AND rownum <= gCommitSize
556 RETURNING price_list_id BULK COLLECT INTO xPriceListIds;
557
558 xErrLoc := 200;
559 ICX_POR_EXT_UTL.extCommit;
560 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
561 xContinue := FALSE;
562 END IF;
563
564 xErrLoc := 300;
565 delPriceLists(xPriceListIds);
566 END LOOP;
567 EXCEPTION
568 WHEN OTHERS THEN
569 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delItemPrices-'||
570 xErrLoc||' '||SQLERRM);
571 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
572 pRtItemIds(SQL%ROWCOUNT+1));
573 ICX_POR_EXT_UTL.extRollback;
574 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delItemPrices(' ||
575 xErrLoc|| '): '||sqlerrm;
576 raise_application_error(-20000,gReturnError);
577 END delItemPrices;
578
579 /**
580 ** Proc : delItemsB
581 ** Desc : Deletes the data from ICX_CAT_ITEMS_B
582 **/
586 xContinue BOOLEAN := TRUE;
583 PROCEDURE delItemsB(pRtItemIds IN DBMS_SQL.NUMBER_TABLE)
584 IS
585 xErrLoc PLS_INTEGER := 0;
587
588 BEGIN
589 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_ITEMS_B');
590 xErrLoc := 100;
591 WHILE xContinue LOOP
592 FORALL i IN 1..pRtItemIds.COUNT
593 DELETE FROM icx_cat_items_b
594 WHERE rt_item_id = pRtItemIds(i)
595 AND rownum <= gCommitSize;
596
597 xErrLoc := 200;
598 ICX_POR_EXT_UTL.extCommit;
599 IF ( SQL%ROWCOUNT < gCommitSize ) THEN
600 xContinue := FALSE;
601 END IF;
602 END LOOP;
603 EXCEPTION
604 WHEN OTHERS THEN
605 ICX_POR_EXT_UTL.pushError('ICX_POR_DELETE_CATALOG.delItemsB-'||
606 xErrLoc||' '||SQLERRM);
607 ICX_POR_EXT_UTL.pushError('pRtItemIds('||SQL%ROWCOUNT+1||'): '||
608 pRtItemIds(SQL%ROWCOUNT+1));
609 ICX_POR_EXT_UTL.extRollback;
610 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.delItemsB(' ||
611 xErrLoc|| '): '||sqlerrm;
612 raise_application_error(-20000,gReturnError);
613 END delItemsB;
614
615 /**
616 ** Proc : deleteCommonTables
617 ** Desc : Deletes the data from common tables used by Extractor and DeleteCatalog
618 **/
619 PROCEDURE deleteCommonTables(pRtItemIds IN dbms_sql.number_table,
620 pDeleteOrder IN PLS_INTEGER DEFAULT ITEM_TABLE_LAST)
621 IS
622 xErrLoc PLS_INTEGER := 0;
623
624 BEGIN
625 xErrLoc := 100;
626 delPriceHistory(pRtItemIds);
627 xErrLoc := 120;
628 delItemsTLP(pRtItemIds);
629 xErrLoc := 140;
630 delExtItemsTLP(pRtItemIds);
631 xErrLoc := 160;
632 delItemsCtxTLP(pRtItemIds);
633 xErrLoc := 180;
634 delFavoriteList(pRtItemIds);
635
636 -- Based on pDeleteOrder, we have to delete ICX_CAT_ITEMS_B
637 -- before ICX_CAT_CATEGORY_ITEMS, or the other way.
638 -- The reason: if pRtItemIds is seleced based on ICX_CAT_ITEMS_B,
639 -- we have to delete ICX_CAT_ITEMS_B last, otherwise if exception
640 -- happens, next time we won't get correct pRtItemIds, which would
641 -- cause data corruption. Same reason for ICX_CAT_CATEGORY_ITEMS.
642 IF (pDeleteOrder = ITEM_TABLE_LAST) THEN
643 xErrLoc := 200;
644 delCategoryItems(pRtItemIds);
645 xErrLoc := 240;
646 delItemPrices(pRtItemIds);
647 xErrLoc := 260;
648 delItemsB(pRtItemIds);
649 ELSIF (pDeleteOrder = CATITEM_TABLE_LAST) THEN
650 xErrLoc := 300;
651 delItemPrices(pRtItemIds);
652 xErrLoc := 340;
653 delItemsB(pRtItemIds);
654 xErrLoc := 360;
655 delCategoryItems(pRtItemIds);
656 END IF;
657
658 xErrLoc := 400;
659 ICX_POR_EXT_UTL.extAFCommit;
660
661 EXCEPTION
662 WHEN OTHERS THEN
663 ICX_POR_EXT_UTL.extRollback;
664
665 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.deleteCommonTables(' ||
666 xErrLoc||'): '||sqlerrm;
667 raise_application_error(-20000,gReturnError);
668 END deleteCommonTables;
669
670 /**
671 ** Proc : deleteCategoryRelatedInfo
672 ** Desc : Deletes the data from ICX_CAT_BROWSE_TREES,
673 ** ICX_POR_CATEGORY_ORDER_MAP, ICX_POR_CATEGORY_DATA_SOURCES
674 **/
675 PROCEDURE deleteCategoryRelatedInfo(pRtCategoryId IN NUMBER,
676 pCategoryKey IN VARCHAR2)
677 IS
678 xErrLoc PLS_INTEGER := 0;
679 xContinue BOOLEAN := TRUE;
680
681 BEGIN
682 ICX_POR_EXT_UTL.debug('Delete from ICX_CAT_BROWSE_TREES');
683 --Delete the item category from browse trees if it existed in any toc.
684 xErrLoc := 100;
685 DELETE FROM icx_cat_browse_trees
686 WHERE child_category_id = pRtCategoryId;
687
691 DELETE FROM icx_por_category_order_map
688 ICX_POR_EXT_UTL.debug('Delete from ICX_POR_CATEGORY_ORDER_MAP');
689 --Delete the mapping for the item category.
690 xErrLoc := 200;
692 WHERE rt_category_id = pRtCategoryId;
693
694 ICX_POR_EXT_UTL.debug('Delete from ICX_POR_CATEGORY_DATA_SOURCES');
695 --Delete the mapping for the item category.
696 xErrLoc := 300;
697 DELETE FROM icx_por_category_data_sources
698 WHERE category_key = pCategoryKey;
699
700 EXCEPTION
701 WHEN OTHERS THEN
702 gReturnError := gReturnError || 'ICX_POR_DELETE_CATALOG.deleteCategoryRelatedInfo(' ||
703 xErrLoc|| '): '||sqlerrm;
704 raise_application_error(-20000,gReturnError);
705 END deleteCategoryRelatedInfo;
706
707 END ICX_POR_DELETE_CATALOG;