1 PACKAGE BODY OKC_PURGE_PVT AS
2 /* $Header: OKCVPURB.pls 120.0 2005/05/25 18:21:08 appldev noship $ */
3
4 /*
5 -- PROCEDURE purge
6 -- Called by concurrent program to purge old data.
7 -- Parameter p_num_days is how far in the past to end the purge
8 -- p_purge_type is a lookup_code based on lookup_type OKC_PURGE_TYPE
9 -- indicating what kind of purge
10 */
11 PROCEDURE purge (
12 errbuf OUT NOCOPY VARCHAR2,
13 retcode OUT NOCOPY VARCHAR2,
14 p_purge_type IN VARCHAR2,
15 p_num_days IN NUMBER default 3)
16 IS
17 l_api_name VARCHAR2(50) := 'purge';
18 E_Resource_Busy EXCEPTION;
19 PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
20 BEGIN
21 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
22 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,l_api_name,'100: Inside OKC_PURGE_PVT.PURGE');
23 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,l_api_name,'Parameters: p_num_days='||p_num_days||' p_purge_type='||p_purge_type);
24 END IF;
25
26 FND_FILE.PUT_LINE(FND_FILE.LOG,'Parameters: p_num_days='||p_num_days||' p_purge_type='||p_purge_type);
27
28 --Initialize the return code
29 retcode := 0;
30
31 -- Added elsif part to call purge_deviations_data if the
32 -- parameter passed is OKC_DEV_REPORT_T
33
34 if p_purge_type = 'OKC_QA_ERRORS_T' then
35 okc_terms_util_pvt.purge_qa_results(errbuf=>errbuf,
36 retcode=>retcode,
37 p_num_days=>p_num_days);
38 elsif p_purge_type = 'OKC_DEV_REPORT_T' Then
39 okc_terms_deviations_pvt.purge_deviations_data(errbuf=>errbuf,
40 retcode=>retcode,
41 p_num_days=>p_num_days);
42 ELSIF p_purge_type = 'OKC_REP_RECENT_T' THEN
43 OKC_REP_UTIL_PVT.purge_recent_contracts(
44 errbuf=>errbuf,
45 retcode=>retcode,
46 p_num_days=>p_num_days);
47 end if;
48
49 commit;
50
51 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
52 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,l_api_name,'100: leaving OKC_TERMS_UTIL_PVT.PURGE');
53 END IF;
54
55
56 EXCEPTION
57 WHEN E_Resource_Busy THEN
58
59 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
60 FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,l_api_name,'200: Resource busy exception');
61 END IF;
62
63 IF FND_MSG_PUB.Count_Msg > 0 Then
64 FOR I IN 1..FND_MSG_PUB.Count_Msg LOOP
65 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MSG_PUB.Get(i,p_encoded =>FND_API.G_FALSE ));
66 END LOOP;
67 END IF;
68 FND_MSG_PUB.initialize;
69 RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
70 WHEN OTHERS THEN
71
72 retcode := 2;
73 errbuf := substr(sqlerrm,1,200);
74
75 IF ( FND_LOG.LEVEL_UNEXPECTED >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
76 FND_LOG.STRING( FND_LOG.LEVEL_UNEXPECTED ,l_api_name,'200: Other exception:'||errbuf);
77 END IF;
78
79 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
80 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
81 END IF;
82 IF FND_MSG_PUB.Count_Msg > 0 Then
83 FOR I IN 1..FND_MSG_PUB.Count_Msg LOOP
84 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MSG_PUB.Get(i,p_encoded =>FND_API.G_FALSE ));
85 END LOOP;
86 END IF;
87 FND_MSG_PUB.initialize;
88
89
90 END purge;
91
92
93 END OKC_PURGE_PVT;