DBA Data[Home] [Help]

PACKAGE BODY: APPS.MSC_ATP_UTILITY

Source


1 PACKAGE BODY MSC_ATP_UTILITY AS
2 /* $Header: MSCASDUB.pls 120.1 2007/12/12 10:19:22 sbnaik ship $ */
3 
4 PROCEDURE Close_DbLink(p_DbLink varchar2) IS
5   lv_sql_stmt          VARCHAR2(2000);
6   DBLINK_NOT_OPEN      EXCEPTION;
7   PRAGMA               EXCEPTION_INIT(DBLINK_NOT_OPEN, -2081);
8 BEGIN
9   IF p_DbLink <> ' ' then
10     -- mark distributed transaction boundary
11     -- will need to do a manual clean up (commit) of the distributed
12     -- operation, else subsequent operations fail w/ ora-02080 (bug 2218999)
13     commit;
14 
15     lv_sql_stmt := 'alter session close database link ' ||p_DbLink;
16 
17     EXECUTE IMMEDIATE lv_sql_stmt;
18 
19   END IF;
20 EXCEPTION
21   WHEN DBLINK_NOT_OPEN THEN
22     NULL;
23 END Close_DbLink;
24 
25 
26 PROCEDURE Derive_Profile_Values_Frm_Dest (p_SqlErrM OUT NOCOPY VARCHAR2
27                                , p_Profile_Values   OUT NOCOPY VARCHAR2
28                                , p_Profile_Names     IN VARCHAR2
29                                , p_Delimiter         IN VARCHAR2)
30 IS
31   l_Start_Location PLS_INTEGER    := 1;
32   l_Length         PLS_INTEGER    := 1;
33   l_Profile_Names  VARCHAR2(1000) := LTRIM(p_Profile_Names||p_Delimiter,p_Delimiter);
34   l_Profile_values VARCHAR2(1000) := NULL;
35   l_Delimiter      VARCHAR2(10)   := NVL(p_Delimiter,',');
36 BEGIN
37   LOOP
38     l_Length := INSTR(l_Profile_Names,l_Delimiter,l_Start_Location,1) - l_Start_Location;
39     EXIT WHEN l_Length < 1;
40     l_Profile_Values := l_Profile_Values||FND_PROFILE.VALUE(SUBSTR(l_Profile_Names,l_Start_Location,l_Length))||l_Delimiter;
41     l_Start_Location := l_Start_Location + l_Length + 1;
42   END LOOP;
43   p_Profile_Values := l_Profile_Values;
44 EXCEPTION
45   WHEN OTHERS THEN
46     p_SqlErrM := sqlerrm||' (Problem at destination)';
47 END Derive_Profile_Values_Frm_Dest;
48 
49 
50 PROCEDURE Derive_Profile_Values_Frm_Sour (p_SqlErrM OUT NOCOPY VARCHAR2
51                                  , p_Profile_Values OUT NOCOPY VARCHAR2
52                                    , p_Profile_Names IN VARCHAR2
53                                        , p_Delimiter IN VARCHAR2
54                                           , p_DbLink IN VARCHAR2)
55 IS
56   l_SqlStmt VARCHAR2(2000);
57 BEGIN
58   p_SqlErrM := NULL;
59 
60   l_SqlStmt :=
61  'BEGIN MSC_ATP_UTILITY.Derive_Profile_Values_Frm_Dest'||p_DbLink||' (:p_sqlerrm, :l_Profile_Values, :l_Profile_Names, :l_Delimiter); END;';
62 
63   EXECUTE IMMEDIATE l_SqlStmt
64   USING out p_SqlErrM, out p_Profile_Values, p_Profile_Names, p_Delimiter;
65 
66   Close_DbLink(p_DbLink);
67 EXCEPTION
68   WHEN OTHERS THEN
69     p_SqlErrM := sqlerrm||' (Problem at source)';
70     Close_DbLink(p_DbLink);
71 END Derive_Profile_Values_Frm_Sour;
72 
73 END MSC_ATP_UTILITY;