DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_KB_ELE_TYPE_LINKS_PKG

Source


1 PACKAGE BODY CS_KB_ELE_TYPE_LINKS_PKG AS
2 /* $Header: cskbetlb.pls 115.13 2003/12/08 23:22:03 alawang ship $ */
3 
4 
5 function Create_Element_Type_Link(
6   P_LINK_TYPE in VARCHAR2,
7   P_OBJECT_CODE in VARCHAR2,
8   P_ELEMENT_TYPE_ID in NUMBER,
9   P_OTHER_ID in NUMBER,
10   P_OTHER_CODE in VARCHAR2,
11   P_ATTRIBUTE_CATEGORY in VARCHAR2,
12   P_ATTRIBUTE1 in VARCHAR2,
13   P_ATTRIBUTE2 in VARCHAR2,
14   P_ATTRIBUTE3 in VARCHAR2,
15   P_ATTRIBUTE4 in VARCHAR2,
16   P_ATTRIBUTE5 in VARCHAR2,
17   P_ATTRIBUTE6 in VARCHAR2,
18   P_ATTRIBUTE7 in VARCHAR2,
19   P_ATTRIBUTE8 in VARCHAR2,
20   P_ATTRIBUTE9 in VARCHAR2,
21   P_ATTRIBUTE10 in VARCHAR2,
22   P_ATTRIBUTE11 in VARCHAR2,
23   P_ATTRIBUTE12 in VARCHAR2,
24   P_ATTRIBUTE13 in VARCHAR2,
25   P_ATTRIBUTE14 in VARCHAR2,
26   P_ATTRIBUTE15 in VARCHAR2
27 ) return number IS
28   l_date  date;
29   l_created_by number;
30   l_login number;
31   l_count pls_integer;
32   l_id number;
33   l_rowid varchar2(30);
34 
35   CURSOR Check_Link_Exists IS
36   select count(*)
37     from cs_kb_ele_type_links
38     where object_code = p_object_code
39     and   element_type_id = p_element_type_id
40     and   other_code = p_other_code
41     and   (other_id = p_other_id or (other_id is null and p_other_id is null));
42 
43   CURSOR Get_Current_Link_ID IS
44   select link_id
45     from cs_kb_ele_type_links
46     where object_code = p_object_code
47     and   element_type_id = p_element_type_id
48     and   other_code = p_other_code
49     and   (other_id = p_other_id or (other_id is null and p_other_id is null));
50 BEGIN
51 
52   -- Check params
53   if(P_OBJECT_CODE is null OR P_ELEMENT_TYPE_ID is NULL OR
54      (P_OTHER_ID is null and P_OTHER_CODE is null)) then
55     goto error_found;
56   end if;
57 
58   select count(*) into l_count
59     from cs_kb_element_types_b
60     where element_type_id = p_element_type_id;
61   if(l_count <= 0) then goto error_found; end if;
62 
63   -- Check for duplication
64   OPEN  Check_Link_Exists;
65   FETCH Check_Link_Exists INTO l_count;
66   CLOSE Check_Link_Exists;
67 
68   if(l_count <= 0) then
69   begin
70       --prepare data, then insert new element
71 
72       select cs_kb_ele_type_links_s.nextval into l_id from dual;
73       l_date := sysdate;
74       l_created_by := fnd_global.user_id;
75       l_login := fnd_global.login_id;
76 
77       CS_KB_ELE_TYPE_LINKS_PKG.Insert_Row(
78         X_Rowid => l_rowid,
79         X_Link_Id => l_id,
80         X_Link_type => p_link_type,
81         X_Object_Code => p_object_code,
82         X_Element_Type_Id => p_element_type_id,
83         X_Other_Id => p_other_id,
84         X_Other_Code => p_other_code,
85         X_Creation_Date => l_date,
86         X_Created_By => l_created_by,
87         X_Last_Update_Date => l_date,
88         X_Last_Updated_By => l_created_by,
89         X_Last_Update_Login => l_login,
90         X_ATTRIBUTE_CATEGORY => P_ATTRIBUTE_CATEGORY,
91         X_ATTRIBUTE1 => P_ATTRIBUTE1,
92         X_ATTRIBUTE2 => P_ATTRIBUTE2,
93         X_ATTRIBUTE3 => P_ATTRIBUTE3,
94         X_ATTRIBUTE4 => P_ATTRIBUTE4,
95         X_ATTRIBUTE5 => P_ATTRIBUTE5,
96         X_ATTRIBUTE6 => P_ATTRIBUTE6,
97         X_ATTRIBUTE7 => P_ATTRIBUTE7,
98         X_ATTRIBUTE8 => P_ATTRIBUTE8,
99         X_ATTRIBUTE9 => P_ATTRIBUTE9,
100         X_ATTRIBUTE10 => P_ATTRIBUTE10,
101         X_ATTRIBUTE11 => P_ATTRIBUTE11,
102         X_ATTRIBUTE12 => P_ATTRIBUTE12,
103         X_ATTRIBUTE13 => P_ATTRIBUTE13,
104         X_ATTRIBUTE14 => P_ATTRIBUTE14,
105         X_ATTRIBUTE15 => P_ATTRIBUTE15
106        );
107   end;
108   else
109       -- If duplicated, return the id of exsiting one.
110       OPEN  Get_Current_Link_ID;
111       FETCH Get_Current_Link_ID INTO l_id;
112       CLOSE Get_Current_Link_ID;
113   end if;
114 
115   return l_id;
116 
117   <<error_found>>
118   return ERROR_STATUS;
119 
120 END Create_Element_Type_Link;
121 
122 
123 function Update_Element_Type_Link(
124   P_LINK_ID in NUMBER,
125   P_LINK_TYPE in VARCHAR2,
126   P_OBJECT_CODE in VARCHAR2,
127   P_ELEMENT_TYPE_ID in NUMBER,
128   P_OTHER_ID in NUMBER,
129   P_OTHER_CODE in VARCHAR2,
130   P_ATTRIBUTE_CATEGORY in VARCHAR2,
131   P_ATTRIBUTE1 in VARCHAR2,
132   P_ATTRIBUTE2 in VARCHAR2,
133   P_ATTRIBUTE3 in VARCHAR2,
134   P_ATTRIBUTE4 in VARCHAR2,
135   P_ATTRIBUTE5 in VARCHAR2,
136   P_ATTRIBUTE6 in VARCHAR2,
137   P_ATTRIBUTE7 in VARCHAR2,
138   P_ATTRIBUTE8 in VARCHAR2,
139   P_ATTRIBUTE9 in VARCHAR2,
140   P_ATTRIBUTE10 in VARCHAR2,
141   P_ATTRIBUTE11 in VARCHAR2,
142   P_ATTRIBUTE12 in VARCHAR2,
143   P_ATTRIBUTE13 in VARCHAR2,
144   P_ATTRIBUTE14 in VARCHAR2,
145   P_ATTRIBUTE15 in VARCHAR2
146 ) return number is
147   l_ret number;
148   l_date  date;
149   l_updated_by number;
150   l_login number;
151   l_count pls_integer;
152 begin
153 
154   -- validate params
155   if(P_LINK_ID is null ) then
156     goto error_found;
157   end if;
158 
159   --prepare data, then insert new element
160   l_date := sysdate;
161   l_updated_by := fnd_global.user_id;
162   l_login := fnd_global.login_id;
163 
164   CS_KB_ELE_TYPE_LINKS_PKG.Update_Row(
165     X_Link_Id => p_link_id,
166     X_Link_type => p_link_type,
167     X_Object_Code => p_object_code,
168     X_Element_Type_Id => p_element_type_id,
169     X_Other_Id => p_other_id,
170     X_Other_Code => p_other_code,
171     X_Last_Update_Date => l_date,
172     X_Last_Updated_By => l_updated_by,
173     X_Last_Update_Login => l_login,
174     X_ATTRIBUTE_CATEGORY => P_ATTRIBUTE_CATEGORY,
175     X_ATTRIBUTE1 => P_ATTRIBUTE1,
176     X_ATTRIBUTE2 => P_ATTRIBUTE2,
177     X_ATTRIBUTE3 => P_ATTRIBUTE3,
178     X_ATTRIBUTE4 => P_ATTRIBUTE4,
179     X_ATTRIBUTE5 => P_ATTRIBUTE5,
180     X_ATTRIBUTE6 => P_ATTRIBUTE6,
181     X_ATTRIBUTE7 => P_ATTRIBUTE7,
182     X_ATTRIBUTE8 => P_ATTRIBUTE8,
183     X_ATTRIBUTE9 => P_ATTRIBUTE9,
184     X_ATTRIBUTE10 => P_ATTRIBUTE10,
185     X_ATTRIBUTE11 => P_ATTRIBUTE11,
186     X_ATTRIBUTE12 => P_ATTRIBUTE12,
187     X_ATTRIBUTE13 => P_ATTRIBUTE13,
188     X_ATTRIBUTE14 => P_ATTRIBUTE14,
189     X_ATTRIBUTE15 => P_ATTRIBUTE15);
190 
191   return OKAY_STATUS;
192   <<error_found>>
193     return ERROR_STATUS;
194 exception
195   when others then
196     return ERROR_STATUS;
197 end Update_Element_Type_Link;
198 
199 
200 function Delete_Element_Type_Link(
201   P_LINK_ID in NUMBER
202 ) return number is
203 
204 begin
205   if (P_LINK_ID is null ) then return ERROR_STATUS;  end if;
206 
207   delete from CS_KB_ELE_TYPE_LINKS
208   where LINK_ID = P_LINK_ID;
209 
210   if (sql%notfound) then
211     raise no_data_found;
212   end if;
213    return OKAY_STATUS;
214   <<error_found>>
215   return ERROR_STATUS;
216 
217 end Delete_Element_Type_Link;
218 
219 
220 procedure INSERT_ROW (
221   X_ROWID in OUT NOCOPY VARCHAR2,
222   X_LINK_ID in NUMBER,
223   X_LINK_TYPE in varchar2,
224   X_OBJECT_CODE in varchar2,
225   X_ELEMENT_TYPE_ID in NUMBER,
226   X_OTHER_ID in NUMBER,
227   X_OTHER_CODE in varchar2,
228   X_CREATION_DATE in DATE,
229   X_CREATED_BY in NUMBER,
230   X_LAST_UPDATE_DATE in DATE,
231   X_LAST_UPDATED_BY in NUMBER,
232   X_LAST_UPDATE_LOGIN in NUMBER,
233   X_ATTRIBUTE_CATEGORY in VARCHAR2,
234   X_ATTRIBUTE1 in VARCHAR2,
235   X_ATTRIBUTE2 in VARCHAR2,
236   X_ATTRIBUTE3 in VARCHAR2,
237   X_ATTRIBUTE4 in VARCHAR2,
238   X_ATTRIBUTE5 in VARCHAR2,
239   X_ATTRIBUTE6 in VARCHAR2,
240   X_ATTRIBUTE7 in VARCHAR2,
241   X_ATTRIBUTE8 in VARCHAR2,
242   X_ATTRIBUTE9 in VARCHAR2,
243   X_ATTRIBUTE10 in VARCHAR2,
244   X_ATTRIBUTE11 in VARCHAR2,
245   X_ATTRIBUTE12 in VARCHAR2,
246   X_ATTRIBUTE13 in VARCHAR2,
247   X_ATTRIBUTE14 in VARCHAR2,
248   X_ATTRIBUTE15 in VARCHAR2) IS
249 
250   cursor C is select ROWID from CS_KB_ELE_TYPE_LINKS where LINK_ID = X_LINK_ID;
251 
252 BEGIN
253 
254 
255   insert into CS_KB_ELE_TYPE_LINKS (
256     LINK_ID,
257     LINK_TYPE,
258     OBJECT_CODE,
259     ELEMENT_TYPE_ID,
260     OTHER_ID,
261     OTHER_CODE,
262     CREATION_DATE,
263     CREATED_BY,
264     LAST_UPDATE_DATE,
265     LAST_UPDATED_BY,
266     LAST_UPDATE_LOGIN,
267     ATTRIBUTE_CATEGORY,
268     ATTRIBUTE1,
269     ATTRIBUTE2,
270     ATTRIBUTE3,
271     ATTRIBUTE4,
272     ATTRIBUTE5,
273     ATTRIBUTE6,
274     ATTRIBUTE7,
275     ATTRIBUTE8,
276     ATTRIBUTE9,
277     ATTRIBUTE10,
278     ATTRIBUTE11,
279     ATTRIBUTE12,
280     ATTRIBUTE13,
281     ATTRIBUTE14,
282     ATTRIBUTE15
283   ) values (
284     x_link_id,
285     x_link_type,
286     x_object_code,
287     x_element_type_id,
288     x_other_id,
289     x_other_code,
290     X_CREATION_DATE,
291     X_CREATED_BY,
292     X_LAST_UPDATE_DATE,
293     X_LAST_UPDATED_BY,
294     X_LAST_UPDATE_LOGIN,
295     X_ATTRIBUTE_CATEGORY,
296     X_ATTRIBUTE1,
297     X_ATTRIBUTE2,
298     X_ATTRIBUTE3,
299     X_ATTRIBUTE4,
300     X_ATTRIBUTE5,
301     X_ATTRIBUTE6,
302     X_ATTRIBUTE7,
303     X_ATTRIBUTE8,
304     X_ATTRIBUTE9,
305     X_ATTRIBUTE10,
306     X_ATTRIBUTE11,
307     X_ATTRIBUTE12,
308     X_ATTRIBUTE13,
309     X_ATTRIBUTE14,
310     X_ATTRIBUTE15
311     );
312 
313   open c;
314   fetch c into X_ROWID;
315 
316   if (c%notfound) then
317       close c;
318       raise no_data_found;
319   end if;
320 
321   close c;
322 
323 END INSERT_ROW;
324 
325 procedure UPDATE_ROW (
326   X_LINK_ID in NUMBER,
327   X_LINK_TYPE in varchar2,
328   X_OBJECT_CODE in varchar2,
329   X_ELEMENT_TYPE_ID in NUMBER,
330   X_OTHER_ID in NUMBER,
331   X_OTHER_CODE in varchar2,
332   X_LAST_UPDATE_DATE in DATE,
333   X_LAST_UPDATED_BY in NUMBER,
334   X_LAST_UPDATE_LOGIN in NUMBER,
335   X_ATTRIBUTE_CATEGORY in VARCHAR2,
336   X_ATTRIBUTE1 in VARCHAR2,
337   X_ATTRIBUTE2 in VARCHAR2,
338   X_ATTRIBUTE3 in VARCHAR2,
339   X_ATTRIBUTE4 in VARCHAR2,
340   X_ATTRIBUTE5 in VARCHAR2,
341   X_ATTRIBUTE6 in VARCHAR2,
342   X_ATTRIBUTE7 in VARCHAR2,
343   X_ATTRIBUTE8 in VARCHAR2,
344   X_ATTRIBUTE9 in VARCHAR2,
345   X_ATTRIBUTE10 in VARCHAR2,
346   X_ATTRIBUTE11 in VARCHAR2,
347   X_ATTRIBUTE12 in VARCHAR2,
348   X_ATTRIBUTE13 in VARCHAR2,
349   X_ATTRIBUTE14 in VARCHAR2,
350   X_ATTRIBUTE15 in VARCHAR2
351 )IS
352 
353 BEGIN
354 
355   update CS_KB_ELE_TYPE_LINKS set
356 
357     LINK_TYPE = X_LINK_TYPE,
358     OBJECT_CODE = X_OBJECT_CODE,
359     ELEMENT_TYPE_ID = X_ELEMENT_TYPE_ID,
360     OTHER_ID = X_OTHER_ID,
361     OTHER_CODE = X_OTHER_CODE,
362     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
363     LAST_UPDATED_BY =  X_LAST_UPDATED_BY,
364     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
365     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
366     ATTRIBUTE1 = X_ATTRIBUTE1,
367     ATTRIBUTE2 = X_ATTRIBUTE2,
368     ATTRIBUTE3 = X_ATTRIBUTE3,
369     ATTRIBUTE4 = X_ATTRIBUTE4,
370     ATTRIBUTE5 = X_ATTRIBUTE5,
371     ATTRIBUTE6 = X_ATTRIBUTE6,
372     ATTRIBUTE7 = X_ATTRIBUTE7,
373     ATTRIBUTE8 = X_ATTRIBUTE8,
374     ATTRIBUTE9 = X_ATTRIBUTE9,
375     ATTRIBUTE10 = X_ATTRIBUTE10,
376     ATTRIBUTE11 = X_ATTRIBUTE11,
377     ATTRIBUTE12 = X_ATTRIBUTE12,
378     ATTRIBUTE13 = X_ATTRIBUTE13,
379     ATTRIBUTE14 = X_ATTRIBUTE14,
380     ATTRIBUTE15 = X_ATTRIBUTE15
381 
382   where LINK_ID = X_LINK_ID;
383 
384   if (sql%notfound) then
385     raise no_data_found;
386   end if;
387 
388 END UPDATE_ROW;
389 
390 PROCEDURE LOAD_ROW(
391         X_LINK_ID in NUMBER,
392         X_LINK_TYPE in varchar2,
393         X_OBJECT_CODE in varchar2,
394         X_ELEMENT_TYPE_ID in NUMBER,
395         X_OTHER_ID in NUMBER,
396         X_OTHER_CODE in varchar2,
397 	x_owner in varchar2) IS
398    l_user_id number;
399    l_rowid varchar2(100);
400 begin
401 
402     if (x_owner = 'SEED') then
403            l_user_id := 1;
404     else
405            l_user_id := 0;
406     end if;
407 
408       CS_KB_ELE_TYPE_LINKS_PKG.Update_Row(
409           X_LINK_ID => X_LINK_ID,
410 	  X_LINK_TYPE => X_LINK_TYPE,
411 	  X_OBJECT_CODE => X_OBJECT_CODE,
412 	  X_ELEMENT_TYPE_ID => X_ELEMENT_TYPE_ID,
413 	  X_OTHER_ID => X_OTHER_ID,
414 	  X_OTHER_CODE => X_OTHER_CODE,
415 	  X_LAST_UPDATE_DATE => sysdate,
416 	  X_LAST_UPDATED_BY => l_user_id,
417 	  X_LAST_UPDATE_LOGIN => 0);
418 
419     exception
420       when no_data_found then
421   	CS_KB_ELE_TYPE_LINKS_PKG.Insert_Row(
422     		X_Rowid => l_rowid,
423     		X_Link_ID => x_link_id,
424                 X_Link_Type => x_link_type,
425                 X_Object_Code => x_object_code,
426                 X_Element_Type_Id => x_element_type_id,
427                 X_Other_Id => x_other_id,
428                 X_Other_Code => x_other_code,
429 	        X_CREATION_DATE => sysdate,
430 	        X_CREATED_BY => l_user_id,
431 		X_LAST_UPDATE_DATE => sysdate,
432 	        X_LAST_UPDATED_BY => l_user_id,
433                 X_LAST_UPDATE_LOGIN => 0);
434 
435 end;
436 
437 end CS_KB_ELE_TYPE_LINKS_PKG;