DBA Data[Home] [Help]

PACKAGE BODY: APPS.PSB_WS_POSITION_LINE_L_PVT

Source


1 PACKAGE BODY PSB_WS_POSITION_LINE_L_PVT AS
2 /* $Header: PSBVPLLB.pls 120.2 2005/07/13 11:28:32 shtripat ship $ */
3 
4   G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_WS_POSITION_LINE_L_PVT';
5 
6 
7 
8 /*==========================================================================+
9  |                       PROCEDURE Lock_Row                                 |
10  +==========================================================================*/
11 
12 PROCEDURE Lock_Row
13 (
14   p_api_version                 IN      NUMBER,
15   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
16   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
17   p_validation_level            IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
18   p_return_status              OUT  NOCOPY      VARCHAR2,
19   p_msg_count                  OUT  NOCOPY      NUMBER,
20   p_msg_data                   OUT  NOCOPY      VARCHAR2,
21   p_row_locked                 OUT  NOCOPY      VARCHAR2,
22   --
23   p_position_line_id            IN      NUMBER,
24   p_position_id                 IN      NUMBER
25   --
26  )
27 IS
28   --
29   l_api_name            CONSTANT VARCHAR2(30)   := 'Lock_Row';
30   l_api_version         CONSTANT NUMBER         :=  1.0;
31   --
32 
33   Counter NUMBER;
34   CURSOR C IS
35        SELECT position_id, position_line_id
36        FROM   psb_ws_position_lines
37        WHERE  position_line_id = p_position_line_id
38 	 and  position_id = p_position_id
39        FOR UPDATE of position_line_id NOWAIT;
40   Recinfo C%ROWTYPE;
41 
42 BEGIN
43   --
44   SAVEPOINT Lock_Row_Pvt ;
45   --
46   IF NOT FND_API.Compatible_API_Call ( l_api_version,
47 				       p_api_version,
48 				       l_api_name,
49 				       G_PKG_NAME )
50   THEN
51     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
52   END IF;
53   --
54 
55   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
56     FND_MSG_PUB.initialize ;
57   END IF;
58   --
59   p_row_locked  := FND_API.G_TRUE;
60   p_return_status := FND_API.G_RET_STS_SUCCESS ;
61   --
62 
63      OPEN C;
64      --
65      FETCH C INTO Recinfo;
66      IF (C%NOTFOUND) then
67        CLOSE C;
68        FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
69        FND_MSG_PUB.Add;
70        RAISE FND_API.G_EXC_ERROR ;
71      END IF;
72      CLOSE C;
73   --
74   IF FND_API.To_Boolean ( p_commit ) THEN
75     COMMIT WORK;
76   END iF;
77   --
78   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
79 			      p_data  => p_msg_data );
80   --
81 EXCEPTION
82   --
83   WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION THEN
84     ROLLBACK TO Lock_Row_Pvt ;
85     p_row_locked := FND_API.G_FALSE;
86     p_return_status := FND_API.G_RET_STS_ERROR;
87     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
88 				p_data  => p_msg_data );
89   WHEN FND_API.G_EXC_ERROR THEN
90     --
91     ROLLBACK TO Lock_Row_Pvt ;
92     p_return_status := FND_API.G_RET_STS_ERROR;
93     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
94 				p_data  => p_msg_data );
95   --
96   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
97     --
98     ROLLBACK TO Lock_Row_Pvt ;
99     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
100     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
101 				p_data  => p_msg_data );
102   --
103   WHEN OTHERS THEN
104     --
105     ROLLBACK TO Lock_Row_Pvt ;
106     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
107     --
108     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
109       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
110 				l_api_name);
111     END if;
112     --
113     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
114 				p_data  => p_msg_data );
115   --
116 END Lock_Row;
117 /* ----------------------------------------------------------------------- */
118 
119 
120 END PSB_WS_POSITION_LINE_L_PVT;