1: PACKAGE BODY HZ_PURGE AS
2: /* $Header: ARHPURGB.pls 120.47 2006/06/28 22:50:46 awu noship $ */
3: PROCEDURE GENERATE_BODY
4: (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5: x_return_status OUT NOCOPY VARCHAR2,
6: x_msg_count OUT NOCOPY NUMBER,
7: x_msg_data OUT NOCOPY VARCHAR2)
8: IS
57:
58: SAVEPOINT generate_body;
59:
60: -- initialize message list if p_init_msg_list is set to TRUE.
61: IF FND_API.to_Boolean(p_init_msg_list) THEN
62: FND_MSG_PUB.initialize;
63: END IF;
64:
65: -- initialize API return status to success.
62: FND_MSG_PUB.initialize;
63: END IF;
64:
65: -- initialize API return status to success.
66: x_return_status := FND_API.G_RET_STS_SUCCESS;
67: /* Beginnig of the dynamic package generation*/
68: HZ_GEN_PLSQL.new('HZ_PURGE_GEN', 'PACKAGE BODY');
69: HZ_GEN_PLSQL.add_line('CREATE OR REPLACE PACKAGE BODY HZ_PURGE_GEN AS');
70: HZ_GEN_PLSQL.add_line('PROCEDURE IDENTIFY_CANDIDATES(p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
66: x_return_status := FND_API.G_RET_STS_SUCCESS;
67: /* Beginnig of the dynamic package generation*/
68: HZ_GEN_PLSQL.new('HZ_PURGE_GEN', 'PACKAGE BODY');
69: HZ_GEN_PLSQL.add_line('CREATE OR REPLACE PACKAGE BODY HZ_PURGE_GEN AS');
70: HZ_GEN_PLSQL.add_line('PROCEDURE IDENTIFY_CANDIDATES(p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
71: x_return_status OUT NOCOPY VARCHAR2,
72: x_msg_count OUT NOCOPY NUMBER,
73: x_msg_data OUT NOCOPY VARCHAR2,
74: check_flag boolean, con_prg boolean, regid_proc boolean) IS');
86: HZ_GEN_PLSQL.add_line(fnd_global.local_chr(10));
87: HZ_GEN_PLSQL.add_line('SAVEPOINT identify_candidates;');
88:
89: -- initialize message list if p_init_msg_list is set to TRUE.
90: HZ_GEN_PLSQL.add_line('IF FND_API.to_Boolean(p_init_msg_list) THEN');
91: HZ_GEN_PLSQL.add_line('FND_MSG_PUB.initialize;');
92: HZ_GEN_PLSQL.add_line('END IF;');
93:
94: -- initialize API return status to success.
91: HZ_GEN_PLSQL.add_line('FND_MSG_PUB.initialize;');
92: HZ_GEN_PLSQL.add_line('END IF;');
93:
94: -- initialize API return status to success.
95: HZ_GEN_PLSQL.add_line('x_return_status := FND_API.G_RET_STS_SUCCESS;');
96: HZ_GEN_PLSQL.add_line('delete from hz_application_trans_gt; ');
97: HZ_GEN_PLSQL.add_line('open repopulate;');
98: HZ_GEN_PLSQL.add_line('fetch repopulate into single_party;');
99: HZ_GEN_PLSQL.add_line('close repopulate;');
207: HZ_GEN_PLSQL.ADD_LINE(fnd_global.local_chr(10));
208: HZ_GEN_PLSQL.add_line('EXCEPTION');
209: HZ_GEN_PLSQL.add_line('WHEN OTHERS THEN');
210: HZ_GEN_PLSQL.add_line('ROLLBACK to identify_candidates;');
211: HZ_GEN_PLSQL.add_line('x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;');
212: HZ_GEN_PLSQL.add_line('FND_MESSAGE.SET_NAME( ''AR'', ''HZ_API_OTHERS_EXCEP'' );');
213: HZ_GEN_PLSQL.add_line('FND_MESSAGE.SET_TOKEN( ''ERROR'' ,SQLERRM );');
214: HZ_GEN_PLSQL.add_line('FND_MSG_PUB.ADD;');
215:
213: HZ_GEN_PLSQL.add_line('FND_MESSAGE.SET_TOKEN( ''ERROR'' ,SQLERRM );');
214: HZ_GEN_PLSQL.add_line('FND_MSG_PUB.ADD;');
215:
216: HZ_GEN_PLSQL.add_line('FND_MSG_PUB.Count_And_Get(
217: p_encoded => FND_API.G_FALSE,
218: p_count => x_msg_count,
219: p_data => x_msg_data );');
220: HZ_GEN_PLSQL.add_line('RAISE FND_API.G_EXC_ERROR;');
221:
216: HZ_GEN_PLSQL.add_line('FND_MSG_PUB.Count_And_Get(
217: p_encoded => FND_API.G_FALSE,
218: p_count => x_msg_count,
219: p_data => x_msg_data );');
220: HZ_GEN_PLSQL.add_line('RAISE FND_API.G_EXC_ERROR;');
221:
222: HZ_GEN_PLSQL.add_line('END IDENTIFY_CANDIDATES;');
223:
224: HZ_GEN_PLSQL.add_line('END HZ_PURGE_GEN;');
226:
227:
228: -- standard call to get message count and if count is 1, get message info.
229: FND_MSG_PUB.Count_And_Get(
230: p_encoded => FND_API.G_FALSE,
231: p_count => x_msg_count,
232: p_data => x_msg_data);
233:
234: EXCEPTION
231: p_count => x_msg_count,
232: p_data => x_msg_data);
233:
234: EXCEPTION
235: WHEN FND_API.G_EXC_ERROR THEN
236: ROLLBACK ;
237: x_return_status := FND_API.G_RET_STS_ERROR;
238: FND_MSG_PUB.Count_And_Get(
239: p_encoded => FND_API.G_FALSE,
233:
234: EXCEPTION
235: WHEN FND_API.G_EXC_ERROR THEN
236: ROLLBACK ;
237: x_return_status := FND_API.G_RET_STS_ERROR;
238: FND_MSG_PUB.Count_And_Get(
239: p_encoded => FND_API.G_FALSE,
240: p_count => x_msg_count,
241: p_data => x_msg_data);
235: WHEN FND_API.G_EXC_ERROR THEN
236: ROLLBACK ;
237: x_return_status := FND_API.G_RET_STS_ERROR;
238: FND_MSG_PUB.Count_And_Get(
239: p_encoded => FND_API.G_FALSE,
240: p_count => x_msg_count,
241: p_data => x_msg_data);
242: RAISE FND_API.G_EXC_ERROR;
243:
238: FND_MSG_PUB.Count_And_Get(
239: p_encoded => FND_API.G_FALSE,
240: p_count => x_msg_count,
241: p_data => x_msg_data);
242: RAISE FND_API.G_EXC_ERROR;
243:
244: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
245: ROLLBACK ;
246: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
240: p_count => x_msg_count,
241: p_data => x_msg_data);
242: RAISE FND_API.G_EXC_ERROR;
243:
244: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
245: ROLLBACK ;
246: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
247: FND_MSG_PUB.Count_And_Get(
248: p_encoded => FND_API.G_FALSE,
242: RAISE FND_API.G_EXC_ERROR;
243:
244: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
245: ROLLBACK ;
246: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
247: FND_MSG_PUB.Count_And_Get(
248: p_encoded => FND_API.G_FALSE,
249: p_count => x_msg_count,
250: p_data => x_msg_data);
244: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
245: ROLLBACK ;
246: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
247: FND_MSG_PUB.Count_And_Get(
248: p_encoded => FND_API.G_FALSE,
249: p_count => x_msg_count,
250: p_data => x_msg_data);
251: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
252: WHEN OTHERS THEN
247: FND_MSG_PUB.Count_And_Get(
248: p_encoded => FND_API.G_FALSE,
249: p_count => x_msg_count,
250: p_data => x_msg_data);
251: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
252: WHEN OTHERS THEN
253: ROLLBACK;
254: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
255:
250: p_data => x_msg_data);
251: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
252: WHEN OTHERS THEN
253: ROLLBACK;
254: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
255:
256: FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
257: FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
258: FND_MSG_PUB.ADD;
257: FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
258: FND_MSG_PUB.ADD;
259:
260: FND_MSG_PUB.Count_And_Get(
261: p_encoded => FND_API.G_FALSE,
262: p_count => x_msg_count,
263: p_data => x_msg_data );
264: RAISE FND_API.G_EXC_ERROR;
265:
260: FND_MSG_PUB.Count_And_Get(
261: p_encoded => FND_API.G_FALSE,
262: p_count => x_msg_count,
263: p_data => x_msg_data );
264: RAISE FND_API.G_EXC_ERROR;
265:
266: END;
267:
268:
437: end loop;
438: close printparties;
439:
440: EXCEPTION
441: WHEN FND_API.G_EXC_ERROR THEN
442: retcode := 2;
443: errbuf := errbuf || logerror||SQLERRM;
444: FND_FILE.close;
445: update hz_purge_batches set status='IDENTIFICATION_ERROR' where batch_id=to_number(batchid);
442: retcode := 2;
443: errbuf := errbuf || logerror||SQLERRM;
444: FND_FILE.close;
445: update hz_purge_batches set status='IDENTIFICATION_ERROR' where batch_id=to_number(batchid);
446: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
447: retcode := 2;
448: errbuf := errbuf || logerror||SQLERRM;
449: FND_FILE.close;
450: update hz_purge_batches set status='IDENTIFICATION_ERROR' where batch_id=to_number(batchid);
457:
458: /* To check if a single party has any transactions */
459:
460: /*PROCEDURE check_single_party_trans
461: (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
462: x_return_status OUT NOCOPY VARCHAR2,
463: x_msg_count OUT NOCOPY NUMBER,
464: x_msg_data OUT NOCOPY VARCHAR2,
465: partyid number,
476: /*
477: SAVEPOINT check_single_party_trans;
478:
479: -- initialize message list if p_init_msg_list is set to TRUE.
480: IF FND_API.to_Boolean(p_init_msg_list) THEN
481: FND_MSG_PUB.initialize;
482: END IF;
483:
484: -- initialize API return status to success.
481: FND_MSG_PUB.initialize;
482: END IF;
483:
484: -- initialize API return status to success.
485: x_return_status := FND_API.G_RET_STS_SUCCESS;
486:
487: delete from hz_purge_gt;
488: insert into hz_purge_gt(party_id) select party_id from hz_parties where party_id=partyid;
489: hz_purge_gen.identify_candidates(p_init_msg_list, x_return_status, x_msg_count, x_msg_data, true, false);
497: close party;
498:
499: -- standard call to get message count and if count is 1, get message info.
500: FND_MSG_PUB.Count_And_Get(
501: p_encoded => FND_API.G_FALSE,
502: p_count => x_msg_count,
503: p_data => x_msg_data);
504:
505: EXCEPTION
502: p_count => x_msg_count,
503: p_data => x_msg_data);
504:
505: EXCEPTION
506: WHEN FND_API.G_EXC_ERROR THEN
507: ROLLBACK TO check_single_party_trans;
508: x_return_status := FND_API.G_RET_STS_ERROR;
509: FND_MSG_PUB.Count_And_Get(
510: p_encoded => FND_API.G_FALSE,
504:
505: EXCEPTION
506: WHEN FND_API.G_EXC_ERROR THEN
507: ROLLBACK TO check_single_party_trans;
508: x_return_status := FND_API.G_RET_STS_ERROR;
509: FND_MSG_PUB.Count_And_Get(
510: p_encoded => FND_API.G_FALSE,
511: p_count => x_msg_count,
512: p_data => x_msg_data);
506: WHEN FND_API.G_EXC_ERROR THEN
507: ROLLBACK TO check_single_party_trans;
508: x_return_status := FND_API.G_RET_STS_ERROR;
509: FND_MSG_PUB.Count_And_Get(
510: p_encoded => FND_API.G_FALSE,
511: p_count => x_msg_count,
512: p_data => x_msg_data);
513: RAISE FND_API.G_EXC_ERROR;
514:
509: FND_MSG_PUB.Count_And_Get(
510: p_encoded => FND_API.G_FALSE,
511: p_count => x_msg_count,
512: p_data => x_msg_data);
513: RAISE FND_API.G_EXC_ERROR;
514:
515: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
516: ROLLBACK TO check_single_party_trans;
517: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
511: p_count => x_msg_count,
512: p_data => x_msg_data);
513: RAISE FND_API.G_EXC_ERROR;
514:
515: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
516: ROLLBACK TO check_single_party_trans;
517: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
518: FND_MSG_PUB.Count_And_Get(
519: p_encoded => FND_API.G_FALSE,
513: RAISE FND_API.G_EXC_ERROR;
514:
515: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
516: ROLLBACK TO check_single_party_trans;
517: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
518: FND_MSG_PUB.Count_And_Get(
519: p_encoded => FND_API.G_FALSE,
520: p_count => x_msg_count,
521: p_data => x_msg_data);
515: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
516: ROLLBACK TO check_single_party_trans;
517: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
518: FND_MSG_PUB.Count_And_Get(
519: p_encoded => FND_API.G_FALSE,
520: p_count => x_msg_count,
521: p_data => x_msg_data);
522: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
523:
518: FND_MSG_PUB.Count_And_Get(
519: p_encoded => FND_API.G_FALSE,
520: p_count => x_msg_count,
521: p_data => x_msg_data);
522: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
523:
524: WHEN OTHERS THEN
525: ROLLBACK to check_single_party_trans;
526: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
522: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
523:
524: WHEN OTHERS THEN
525: ROLLBACK to check_single_party_trans;
526: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
527:
528: FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
529: FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
530: FND_MSG_PUB.ADD;
529: FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
530: FND_MSG_PUB.ADD;
531:
532: FND_MSG_PUB.Count_And_Get(
533: p_encoded => FND_API.G_FALSE,
534: p_count => x_msg_count,
535: p_data => x_msg_data );
536: RAISE FND_API.G_EXC_ERROR;
537:
532: FND_MSG_PUB.Count_And_Get(
533: p_encoded => FND_API.G_FALSE,
534: p_count => x_msg_count,
535: p_data => x_msg_data );
536: RAISE FND_API.G_EXC_ERROR;
537:
538: end;*/
539:
540: /* Procedure to purge parties. This is called by the concurrent program */
862: end;
863:
864: hz_common_pub.enable_cont_source_security;
865: EXCEPTION
866: WHEN FND_API.G_EXC_ERROR THEN
867: retcode := 2;
868: errbuf := errbuf || logerror||SQLERRM;
869: FND_FILE.close;
870: update hz_purge_batches set status='PURGE_ERROR' where batch_id=batchid;
867: retcode := 2;
868: errbuf := errbuf || logerror||SQLERRM;
869: FND_FILE.close;
870: update hz_purge_batches set status='PURGE_ERROR' where batch_id=batchid;
871: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
872: retcode := 2;
873: errbuf := errbuf || logerror||SQLERRM;
874: FND_FILE.close;
875: update hz_purge_batches set status='PURGE_ERROR' where batch_id=batchid;
883:
884: /* Purge Single Party */
885:
886: PROCEDURE PURGE_PARTY
887: (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
888: x_return_status OUT NOCOPY VARCHAR2,
889: x_msg_count OUT NOCOPY NUMBER,
890: x_msg_data OUT NOCOPY VARCHAR2,
891: p_party_id NUMBER) IS
898:
899: SAVEPOINT PURGE_PARTY;
900:
901: -- initialize message list if p_init_msg_list is set to TRUE.
902: IF FND_API.to_Boolean(p_init_msg_list) THEN
903: FND_MSG_PUB.initialize;
904: END IF;
905:
906: -- initialize API return status to success.
903: FND_MSG_PUB.initialize;
904: END IF;
905:
906: -- initialize API return status to success.
907: x_return_status := FND_API.G_RET_STS_SUCCESS;
908: ---please enter the directory as the third parameter to which the file needs to be copied.
909: --fnd_file.put_names('delparty.log',null,'/sqlcom/outbound');
910:
911: insert into hz_purge_candidates(BATCH_ID,CANDIDATE_PARTY_ID,PARTY_NAME,PARTY_NUMBER,ADDRESSES,PHONE_NUMBERS,COUNTRY,STATUS,CREATION_DATE,
1091: --fnd_file.close;
1092: hz_common_pub.enable_cont_source_security;
1093: -- standard call to get message count and if count is 1, get message info.
1094: FND_MSG_PUB.Count_And_Get(
1095: p_encoded => FND_API.G_FALSE,
1096: p_count => x_msg_count,
1097: p_data => x_msg_data);
1098:
1099:
1097: p_data => x_msg_data);
1098:
1099:
1100: EXCEPTION
1101: WHEN FND_API.G_EXC_ERROR THEN
1102: ROLLBACK TO PURGE_PARTY;
1103: x_return_status := FND_API.G_RET_STS_ERROR;
1104: FND_MSG_PUB.Count_And_Get(
1105: p_encoded => FND_API.G_FALSE,
1099:
1100: EXCEPTION
1101: WHEN FND_API.G_EXC_ERROR THEN
1102: ROLLBACK TO PURGE_PARTY;
1103: x_return_status := FND_API.G_RET_STS_ERROR;
1104: FND_MSG_PUB.Count_And_Get(
1105: p_encoded => FND_API.G_FALSE,
1106: p_count => x_msg_count,
1107: p_data => x_msg_data);
1101: WHEN FND_API.G_EXC_ERROR THEN
1102: ROLLBACK TO PURGE_PARTY;
1103: x_return_status := FND_API.G_RET_STS_ERROR;
1104: FND_MSG_PUB.Count_And_Get(
1105: p_encoded => FND_API.G_FALSE,
1106: p_count => x_msg_count,
1107: p_data => x_msg_data);
1108: RAISE FND_API.G_EXC_ERROR;
1109:
1104: FND_MSG_PUB.Count_And_Get(
1105: p_encoded => FND_API.G_FALSE,
1106: p_count => x_msg_count,
1107: p_data => x_msg_data);
1108: RAISE FND_API.G_EXC_ERROR;
1109:
1110: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1111: ROLLBACK TO PURGE_PARTY;
1112: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1106: p_count => x_msg_count,
1107: p_data => x_msg_data);
1108: RAISE FND_API.G_EXC_ERROR;
1109:
1110: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1111: ROLLBACK TO PURGE_PARTY;
1112: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1113: FND_MSG_PUB.Count_And_Get(
1114: p_encoded => FND_API.G_FALSE,
1108: RAISE FND_API.G_EXC_ERROR;
1109:
1110: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1111: ROLLBACK TO PURGE_PARTY;
1112: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1113: FND_MSG_PUB.Count_And_Get(
1114: p_encoded => FND_API.G_FALSE,
1115: p_count => x_msg_count,
1116: p_data => x_msg_data);
1110: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1111: ROLLBACK TO PURGE_PARTY;
1112: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1113: FND_MSG_PUB.Count_And_Get(
1114: p_encoded => FND_API.G_FALSE,
1115: p_count => x_msg_count,
1116: p_data => x_msg_data);
1117: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1118:
1113: FND_MSG_PUB.Count_And_Get(
1114: p_encoded => FND_API.G_FALSE,
1115: p_count => x_msg_count,
1116: p_data => x_msg_data);
1117: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1118:
1119: WHEN OTHERS THEN
1120: ROLLBACK to PURGE_PARTY;
1121: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1117: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1118:
1119: WHEN OTHERS THEN
1120: ROLLBACK to PURGE_PARTY;
1121: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1122:
1123: FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
1124: FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
1125: FND_MSG_PUB.ADD;
1124: FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
1125: FND_MSG_PUB.ADD;
1126:
1127: FND_MSG_PUB.Count_And_Get(
1128: p_encoded => FND_API.G_FALSE,
1129: p_count => x_msg_count,
1130: p_data => x_msg_data );
1131: RAISE FND_API.G_EXC_ERROR;
1132:
1127: FND_MSG_PUB.Count_And_Get(
1128: p_encoded => FND_API.G_FALSE,
1129: p_count => x_msg_count,
1130: p_data => x_msg_data );
1131: RAISE FND_API.G_EXC_ERROR;
1132:
1133: END purge_party;
1134:
1135: PROCEDURE post_app_logic(appid NUMBER, single_party VARCHAR2, check_flag boolean) IS
1162: BEGIN
1163: FND_MSG_PUB.Reset;
1164:
1165: FOR I IN 1..FND_MSG_PUB.Count_Msg LOOP
1166: l_msg_data := l_msg_data || ' ' || FND_MSG_PUB.Get(p_encoded => FND_API.G_FALSE );
1167: END LOOP;
1168: log(l_msg_data,true);
1169: RETURN l_msg_data;
1170: END logerror;
1223: WHEN OTHERS THEN
1224: FND_MESSAGE.SET_NAME('AR', 'HZ_MERGE_SQL_ERROR');
1225: FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1226: FND_MSG_PUB.ADD;
1227: RAISE FND_API.G_EXC_ERROR;*/
1228: null;
1229: END get_col_type;
1230:
1231: FUNCTION has_context(proc VARCHAR2) RETURN BOOLEAN IS