1: package body WF_MESSAGE_ATTRIBUTES_PKG as
2: /* $Header: wfmsab.pls 120.2 2005/07/02 03:51:55 appldev ship $ */
3: procedure INSERT_ROW (
4: X_ROWID in out nocopy VARCHAR2,
5: X_MESSAGE_NAME in VARCHAR2,
18: X_DISPLAY_NAME in VARCHAR2,
19: X_DESCRIPTION in VARCHAR2,
20: X_ATTACH in VARCHAR2
21: ) is
22: cursor C is select ROWID from WF_MESSAGE_ATTRIBUTES
23: where MESSAGE_NAME = X_MESSAGE_NAME
24: and MESSAGE_TYPE = X_MESSAGE_TYPE
25: and NAME = X_NAME
26: ;
24: and MESSAGE_TYPE = X_MESSAGE_TYPE
25: and NAME = X_NAME
26: ;
27: begin
28: insert into WF_MESSAGE_ATTRIBUTES (
29: MESSAGE_TYPE,
30: MESSAGE_NAME,
31: NAME,
32: SEQUENCE,
56: X_DATE_DEFAULT,
57: X_ATTACH
58: );
59:
60: insert into WF_MESSAGE_ATTRIBUTES_TL (
61: MESSAGE_TYPE,
62: MESSAGE_NAME,
63: NAME,
64: DISPLAY_NAME,
80: from WF_LANGUAGES L
81: where L.INSTALLED_FLAG = 'Y'
82: and not exists
83: (select NULL
84: from WF_MESSAGE_ATTRIBUTES_TL T
85: where T.MESSAGE_NAME = X_MESSAGE_NAME
86: and T.MESSAGE_TYPE = X_MESSAGE_TYPE
87: and T.NAME = X_NAME
88: and T.LANGUAGE = L.CODE);
96: close c;
97:
98: exception
99: when others then
100: wf_core.context('Wf_Message_Attributes_Pkg', 'Insert_Row',
101: x_message_name, x_message_type, x_name);
102: raise;
103: end INSERT_ROW;
104:
129: FORMAT,
130: TEXT_DEFAULT,
131: NUMBER_DEFAULT,
132: DATE_DEFAULT
133: from WF_MESSAGE_ATTRIBUTES
134: where MESSAGE_NAME = X_MESSAGE_NAME
135: and MESSAGE_TYPE = X_MESSAGE_TYPE
136: and NAME = X_NAME
137: for update of MESSAGE_NAME nowait;
139:
140: cursor c1 is select
141: DISPLAY_NAME,
142: DESCRIPTION
143: from WF_MESSAGE_ATTRIBUTES_TL
144: where MESSAGE_NAME = X_MESSAGE_NAME
145: and MESSAGE_TYPE = X_MESSAGE_TYPE
146: and NAME = X_NAME
147: and LANGUAGE = userenv('LANG')
195: return;
196:
197: exception
198: when others then
199: wf_core.context('Wf_Message_Attributes_Pkg', 'Lock_Row',
200: x_message_name, x_message_type, x_name);
201: raise;
202: end LOCK_ROW;
203:
219: X_DESCRIPTION in VARCHAR2,
220: X_ATTACH in VARCHAR2
221: ) is
222: begin
223: update WF_MESSAGE_ATTRIBUTES set
224: SEQUENCE = X_SEQUENCE,
225: TYPE = X_TYPE,
226: SUBTYPE = X_SUBTYPE,
227: VALUE_TYPE = X_VALUE_TYPE,
239: if (sql%notfound) then
240: raise no_data_found;
241: end if;
242:
243: update WF_MESSAGE_ATTRIBUTES_TL set
244: DISPLAY_NAME = X_DISPLAY_NAME,
245: DESCRIPTION = X_DESCRIPTION,
246: SOURCE_LANG = userenv('LANG')
247: where MESSAGE_NAME = X_MESSAGE_NAME
254: end if;
255:
256: exception
257: when others then
258: wf_core.context('Wf_Message_Attributes_Pkg', 'Update_Row',
259: x_message_name, x_message_type, x_name);
260: raise;
261: end UPDATE_ROW;
262:
265: X_MESSAGE_TYPE in VARCHAR2,
266: X_NAME in VARCHAR2
267: ) is
268: begin
269: delete from WF_MESSAGE_ATTRIBUTES_TL
270: where MESSAGE_NAME = X_MESSAGE_NAME
271: and MESSAGE_TYPE = X_MESSAGE_TYPE
272: and NAME = X_NAME;
273:
274: if (sql%notfound) then
275: raise no_data_found;
276: end if;
277:
278: delete from WF_MESSAGE_ATTRIBUTES
279: where MESSAGE_NAME = X_MESSAGE_NAME
280: and MESSAGE_TYPE = X_MESSAGE_TYPE
281: and NAME = X_NAME;
282:
285: end if;
286:
287: exception
288: when others then
289: wf_core.context('Wf_Message_Attributes_Pkg', 'Delete_Row',
290: x_message_name, x_message_type, x_name);
291: raise;
292: end DELETE_ROW;
293:
299: /* as a quick workaround to fix the time-consuming table handler issue */
300: /* Eventually we'll need to turn them into a separate fix_language procedure */
301: /*
302:
303: delete from WF_MESSAGE_ATTRIBUTES_TL T
304: where not exists
305: (select NULL
306: from WF_MESSAGE_ATTRIBUTES B
307: where B.MESSAGE_NAME = T.MESSAGE_NAME
302:
303: delete from WF_MESSAGE_ATTRIBUTES_TL T
304: where not exists
305: (select NULL
306: from WF_MESSAGE_ATTRIBUTES B
307: where B.MESSAGE_NAME = T.MESSAGE_NAME
308: and B.MESSAGE_TYPE = T.MESSAGE_TYPE
309: and B.NAME = T.NAME
310: );
308: and B.MESSAGE_TYPE = T.MESSAGE_TYPE
309: and B.NAME = T.NAME
310: );
311:
312: update WF_MESSAGE_ATTRIBUTES_TL T set (
313: DISPLAY_NAME,
314: DESCRIPTION
315: ) = (select
316: B.DISPLAY_NAME,
314: DESCRIPTION
315: ) = (select
316: B.DISPLAY_NAME,
317: B.DESCRIPTION
318: from WF_MESSAGE_ATTRIBUTES_TL B
319: where B.MESSAGE_NAME = T.MESSAGE_NAME
320: and B.MESSAGE_TYPE = T.MESSAGE_TYPE
321: and B.NAME = T.NAME
322: and B.LANGUAGE = T.SOURCE_LANG)
329: SUBT.MESSAGE_NAME,
330: SUBT.MESSAGE_TYPE,
331: SUBT.NAME,
332: SUBT.LANGUAGE
333: from WF_MESSAGE_ATTRIBUTES_TL SUBB, WF_MESSAGE_ATTRIBUTES_TL SUBT
334: where SUBB.MESSAGE_NAME = SUBT.MESSAGE_NAME
335: and SUBB.MESSAGE_TYPE = SUBT.MESSAGE_TYPE
336: and SUBB.NAME = SUBT.NAME
337: and SUBB.LANGUAGE = SUBT.SOURCE_LANG
341: or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
342: ));
343: */
344:
345: insert /*+ append parallel */ into WF_MESSAGE_ATTRIBUTES_TL (
346: MESSAGE_TYPE,
347: MESSAGE_NAME,
348: NAME,
349: DISPLAY_NAME,
361: B.CUSTOM_LEVEL,
362: B.DESCRIPTION,
363: L.CODE,
364: B.SOURCE_LANG
365: from WF_MESSAGE_ATTRIBUTES_TL B, WF_LANGUAGES L
366: where L.INSTALLED_FLAG = 'Y'
367: and B.LANGUAGE = userenv('LANG')
368: and ( B.MESSAGE_NAME,B.MESSAGE_TYPE, B.NAME , L.CODE) NOT IN
369: (select /*+ hash_aj index_ffs(T,WF_MESSAGE_ATTRIBUTES_TL_PK) */
365: from WF_MESSAGE_ATTRIBUTES_TL B, WF_LANGUAGES L
366: where L.INSTALLED_FLAG = 'Y'
367: and B.LANGUAGE = userenv('LANG')
368: and ( B.MESSAGE_NAME,B.MESSAGE_TYPE, B.NAME , L.CODE) NOT IN
369: (select /*+ hash_aj index_ffs(T,WF_MESSAGE_ATTRIBUTES_TL_PK) */
370: T.MESSAGE_NAME ,T.MESSAGE_TYPE ,T.NAME ,T.LANGUAGE
371: from WF_MESSAGE_ATTRIBUTES_TL T);
372:
373: end ADD_LANGUAGE;
367: and B.LANGUAGE = userenv('LANG')
368: and ( B.MESSAGE_NAME,B.MESSAGE_TYPE, B.NAME , L.CODE) NOT IN
369: (select /*+ hash_aj index_ffs(T,WF_MESSAGE_ATTRIBUTES_TL_PK) */
370: T.MESSAGE_NAME ,T.MESSAGE_TYPE ,T.NAME ,T.LANGUAGE
371: from WF_MESSAGE_ATTRIBUTES_TL T);
372:
373: end ADD_LANGUAGE;
374:
375: end WF_MESSAGE_ATTRIBUTES_PKG;
371: from WF_MESSAGE_ATTRIBUTES_TL T);
372:
373: end ADD_LANGUAGE;
374:
375: end WF_MESSAGE_ATTRIBUTES_PKG;