DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMA_WF_GENRIC_PKG

Source


1 PACKAGE BODY GMA_WF_GENRIC_PKG AS
2 /* $Header: GMAWSRTB.pls 115.2 2002/12/03 22:41:38 appldev noship $ */
3 PROCEDURE SORT_ACT_DATA (P_ACTIVITY_ID NUMBER,
4                       SORTED_DATA IN OUT NOCOPY ACT_SORTED_DATA_TBL_TYPE) AS
5   TYPE RETRIEVE_DATA IS REF CURSOR;
6   RET_DATA   RETRIEVE_DATA;  -- declare cursor variable
7   sql_stmt   VARCHAR2(300);
8   DATA_REC   GMA_ACTDATA_WF%ROWTYPE;
9   COUNTER1   NUMBER(5) := 10;
10   l_where1   VARCHAR2(40) := ' AND COLUMN_VALUE1 IS NOT NULL  ';
11   l_where2   VARCHAR2(40) := ' AND COLUMN_VALUE2 IS NOT NULL  ';
12   l_where3   VARCHAR2(40) := ' AND COLUMN_VALUE3 IS NOT NULL  ';
13   l_where4   VARCHAR2(40) := ' AND COLUMN_VALUE4 IS NOT NULL  ';
14   l_where5   VARCHAR2(40) := ' AND COLUMN_VALUE5 IS NOT NULL  ';
15   l_where6   VARCHAR2(40) := ' AND COLUMN_VALUE6 IS NOT NULL  ';
16   l_where7   VARCHAR2(40) := ' AND COLUMN_VALUE7 IS NOT NULL  ';
17   l_where8   VARCHAR2(40) := ' AND COLUMN_VALUE8 IS NOT NULL  ';
18   l_where9   VARCHAR2(40) := ' AND COLUMN_VALUE9 IS NOT NULL  ';
19   l_where10  VARCHAR2(40) := ' AND COLUMN_VALUE10 IS NOT NULL  ';
20   sql_stmt1  VARCHAR2(4000);
21   no_cols    NUMBER(5);
22   set_where  NUMBER(5);
23   i    INTEGER := 1;
24 BEGIN
25   sql_stmt := 'SELECT * FROM GMA_ACTDATA_WF WHERE ACTIVITY_ID = ' ||P_ACTIVITY_ID;
26   LOOP
27     IF COUNTER1 > 0 THEN
28                   /* Make the last column value in hierarchy NULL */
29       sql_stmt1 := sql_stmt || l_where1 || l_where2 || l_where3
30                   || l_where4 || l_where5 || l_where6
31                   || l_where7 || l_where8 || l_where9
32                   || l_where10;
33       OPEN RET_DATA FOR sql_stmt1;
34       LOOP
35         FETCH RET_DATA INTO DATA_REC;
36         EXIT WHEN RET_DATA%NOTFOUND;
37 	SORTED_DATA(i).ACTIVITY_ID         :=DATA_REC.ACTIVITY_ID;
38 	SORTED_DATA(i).COLUMN_NAME1        :=DATA_REC.COLUMN_NAME1;
39 	SORTED_DATA(i).COLUMN_VALUE1       :=DATA_REC.COLUMN_VALUE1;
40 	SORTED_DATA(i).COLUMN_NAME2        :=DATA_REC.COLUMN_NAME2;
41 	SORTED_DATA(i).COLUMN_VALUE2       :=DATA_REC.COLUMN_VALUE2;
42 	SORTED_DATA(i).COLUMN_NAME3        :=DATA_REC.COLUMN_NAME3;
43 	SORTED_DATA(i).COLUMN_VALUE3       :=DATA_REC.COLUMN_VALUE3;
44 	SORTED_DATA(i).COLUMN_NAME4        :=DATA_REC.COLUMN_NAME4;
45 	SORTED_DATA(i).COLUMN_VALUE4       :=DATA_REC.COLUMN_VALUE4;
46 	SORTED_DATA(i).COLUMN_NAME5        :=DATA_REC.COLUMN_NAME5;
47 	SORTED_DATA(i).COLUMN_VALUE5       :=DATA_REC.COLUMN_VALUE5;
48 	SORTED_DATA(i).COLUMN_NAME6        :=DATA_REC.COLUMN_NAME6;
49 	SORTED_DATA(i).COLUMN_VALUE6       :=DATA_REC.COLUMN_VALUE6;
50 	SORTED_DATA(i).COLUMN_NAME7        :=DATA_REC.COLUMN_NAME7;
51 	SORTED_DATA(i).COLUMN_VALUE7       :=DATA_REC.COLUMN_VALUE7;
52 	SORTED_DATA(i).COLUMN_NAME8        :=DATA_REC.COLUMN_NAME8;
53 	SORTED_DATA(i).COLUMN_VALUE8       :=DATA_REC.COLUMN_VALUE8;
54 	SORTED_DATA(i).COLUMN_NAME9        :=DATA_REC.COLUMN_NAME9;
55 	SORTED_DATA(i).COLUMN_VALUE9       :=DATA_REC.COLUMN_VALUE9;
56 	SORTED_DATA(i).COLUMN_NAME10       :=DATA_REC.COLUMN_NAME10;
57 	SORTED_DATA(i).COLUMN_VALUE10      :=DATA_REC.COLUMN_VALUE10;
58 	SORTED_DATA(i).ROLE                :=DATA_REC.ROLE;
59 	SORTED_DATA(i).LAST_UPDATE_LOGIN   :=DATA_REC.LAST_UPDATE_LOGIN;
60 	SORTED_DATA(i).LAST_UPDATED_BY     :=DATA_REC.LAST_UPDATED_BY;
61 	SORTED_DATA(i).CREATED_BY          :=DATA_REC.CREATED_BY;
62 	SORTED_DATA(i).CREATION_DATE       :=DATA_REC.CREATION_DATE;
63 	SORTED_DATA(i).LAST_UPDATE_DATE    :=DATA_REC.LAST_UPDATE_DATE;
64 	SORTED_DATA(i).ENABLE_FLAG         :=DATA_REC.ENABLE_FLAG;
65       UPDATE GMA_ACTDATA_WF
66       SET SORT_ORDER = i
67       WHERE ACTIVITY_ID          = DATA_REC.ACTIVITY_ID
68 	  AND NVL(COLUMN_VALUE1,0) = NVL(DATA_REC.COLUMN_VALUE1,0)
69 	  AND NVL(COLUMN_VALUE2,0) = NVL(DATA_REC.COLUMN_VALUE2,0)
70 	  AND NVL(COLUMN_VALUE3,0) =NVL(DATA_REC.COLUMN_VALUE3,0)
71 	  AND NVL(COLUMN_VALUE4,0) =NVL(DATA_REC.COLUMN_VALUE4,0)
72 	  AND NVL(COLUMN_VALUE5,0) =NVL(DATA_REC.COLUMN_VALUE5,0)
73 	  AND NVL(COLUMN_VALUE6,0) =NVL(DATA_REC.COLUMN_VALUE6,0)
74 	  AND NVL(COLUMN_VALUE7,0) =NVL(DATA_REC.COLUMN_VALUE7,0)
75 	  AND NVL(COLUMN_VALUE8,0) =NVL(DATA_REC.COLUMN_VALUE8,0)
76 	  AND NVL(COLUMN_VALUE9,0) =NVL(DATA_REC.COLUMN_VALUE9,0)
77 	  AND NVL(COLUMN_VALUE10,0)=NVL(DATA_REC.COLUMN_VALUE10,0);
78              i:=i+1;
79       END LOOP;
80       CLOSE RET_DATA;
81       IF  COUNTER1 = 10 THEN
82           l_where10 :=  ' AND COLUMN_VALUE10 IS NULL  ';
83       ELSIF COUNTER1 = 9 THEN
84           l_where9 :=  ' AND COLUMN_VALUE9 IS NULL  ';
85       ELSIF COUNTER1 = 8 THEN
86           l_where8 :=  ' AND COLUMN_VALUE8 IS NULL  ';
87       ELSIF COUNTER1 = 7 THEN
88           l_where7 :=  ' AND COLUMN_VALUE7 IS NULL  ';
89       ELSIF COUNTER1 = 6 THEN
90           l_where6 :=  ' AND COLUMN_VALUE6 IS NULL  ';
91       ELSIF COUNTER1 = 5 THEN
92           l_where5 :=  ' AND COLUMN_VALUE5 IS NULL  ';
93       ELSIF COUNTER1 = 4 THEN
94           l_where4 :=  ' AND COLUMN_VALUE4 IS NULL  ';
95       ELSIF COUNTER1 = 3 THEN
96           l_where3 :=  ' AND COLUMN_VALUE3 IS NULL  ';
97       ELSIF COUNTER1 = 2 THEN
98           l_where2 :=  ' AND COLUMN_VALUE2 IS NULL  ';
99       ELSIF COUNTER1 = 1 THEN
100           l_where1 :=  ' AND COLUMN_VALUE1 IS NULL  ';
101       END IF;
102       COUNTER1 := COUNTER1 - 1;
103     ELSE
104       EXIT;
105     END IF;
106   END LOOP;
107   SELECT count(*) INTO no_cols
108   from  GMA_ACTCOL_WF_B
109   WHERE ACTIVITY_ID = P_ACTIVITY_ID;
110   l_where1   := ' AND COLUMN_VALUE1 IS NULL  ';
111   l_where2   := ' AND COLUMN_VALUE2 IS NOT NULL  ';
112   l_where3   := ' AND COLUMN_VALUE3 IS NOT NULL  ';
113   l_where4   := ' AND COLUMN_VALUE4 IS NOT NULL  ';
114   l_where5   := ' AND COLUMN_VALUE5 IS NOT NULL  ';
115   l_where6   := ' AND COLUMN_VALUE6 IS NOT NULL  ';
116   l_where7   := ' AND COLUMN_VALUE7 IS NOT NULL  ';
117   l_where8   := ' AND COLUMN_VALUE8 IS NOT NULL  ';
118   l_where9   := ' AND COLUMN_VALUE9 IS NOT NULL  ';
119   l_where10  := ' AND COLUMN_VALUE10 IS NOT NULL  ';
120   COUNTER1 := 10;
121   set_where := no_cols;
122   no_cols := 10 - no_cols;
123   LOOP
124     IF no_cols >0 THEN
125        IF  COUNTER1 = 10 THEN
126           l_where10 :=  '  ';
127       ELSIF COUNTER1 = 9 THEN
128           l_where9 :=  '   ';
129       ELSIF COUNTER1 = 8 THEN
130           l_where8 :=  '   ';
131       ELSIF COUNTER1 = 7 THEN
132           l_where7 :=  '   ';
133       ELSIF COUNTER1 = 6 THEN
134           l_where6 :=  '   ';
135       ELSIF COUNTER1 = 5 THEN
136           l_where5 :=  '   ';
137       ELSIF COUNTER1 = 4 THEN
138           l_where4 :=  '  ';
139       ELSIF COUNTER1 = 3 THEN
140           l_where3 :=  '  ';
141       ELSIF COUNTER1 = 2 THEN
142           l_where2 :=  '  ';
143       ELSIF COUNTER1 = 1 THEN
144           l_where1 :=  '  ';
145       END IF;
146       no_cols := no_cols - 1;
147       counter1 := counter1 -1;
148     ELSE
149       EXIT;
150     END IF;
151   END LOOP;
152   COUNTER1 := 1;
153   LOOP
154     IF COUNTER1 <= Set_where THEN
155                   /* Make the last column value in hierarchy NULL */
156       sql_stmt1 := sql_stmt || l_where1 || l_where2 || l_where3
157                   || l_where4 || l_where5 || l_where6
158                   || l_where7 || l_where8 || l_where9
159                   || l_where10;
160       OPEN RET_DATA FOR sql_stmt1;
161       LOOP
162         FETCH RET_DATA INTO DATA_REC;
163         EXIT WHEN RET_DATA%NOTFOUND;
164 	SORTED_DATA(i).ACTIVITY_ID         :=DATA_REC.ACTIVITY_ID;
165 	SORTED_DATA(i).COLUMN_NAME1        :=DATA_REC.COLUMN_NAME1;
166 	SORTED_DATA(i).COLUMN_VALUE1       :=DATA_REC.COLUMN_VALUE1;
167 	SORTED_DATA(i).COLUMN_NAME2        :=DATA_REC.COLUMN_NAME2;
168 	SORTED_DATA(i).COLUMN_VALUE2       :=DATA_REC.COLUMN_VALUE2;
169 	SORTED_DATA(i).COLUMN_NAME3        :=DATA_REC.COLUMN_NAME3;
170 	SORTED_DATA(i).COLUMN_VALUE3       :=DATA_REC.COLUMN_VALUE3;
171 	SORTED_DATA(i).COLUMN_NAME4        :=DATA_REC.COLUMN_NAME4;
172 	SORTED_DATA(i).COLUMN_VALUE4       :=DATA_REC.COLUMN_VALUE4;
173 	SORTED_DATA(i).COLUMN_NAME5        :=DATA_REC.COLUMN_NAME5;
174 	SORTED_DATA(i).COLUMN_VALUE5       :=DATA_REC.COLUMN_VALUE5;
175 	SORTED_DATA(i).COLUMN_NAME6        :=DATA_REC.COLUMN_NAME6;
176 	SORTED_DATA(i).COLUMN_VALUE6       :=DATA_REC.COLUMN_VALUE6;
177 	SORTED_DATA(i).COLUMN_NAME7        :=DATA_REC.COLUMN_NAME7;
178 	SORTED_DATA(i).COLUMN_VALUE7       :=DATA_REC.COLUMN_VALUE7;
179 	SORTED_DATA(i).COLUMN_NAME8        :=DATA_REC.COLUMN_NAME8;
180 	SORTED_DATA(i).COLUMN_VALUE8       :=DATA_REC.COLUMN_VALUE8;
181 	SORTED_DATA(i).COLUMN_NAME9        :=DATA_REC.COLUMN_NAME9;
182 	SORTED_DATA(i).COLUMN_VALUE9       :=DATA_REC.COLUMN_VALUE9;
183 	SORTED_DATA(i).COLUMN_NAME10       :=DATA_REC.COLUMN_NAME10;
184 	SORTED_DATA(i).COLUMN_VALUE10      :=DATA_REC.COLUMN_VALUE10;
185 	SORTED_DATA(i).ROLE                :=DATA_REC.ROLE;
186 	SORTED_DATA(i).LAST_UPDATE_LOGIN   :=DATA_REC.LAST_UPDATE_LOGIN;
187 	SORTED_DATA(i).LAST_UPDATED_BY     :=DATA_REC.LAST_UPDATED_BY;
188 	SORTED_DATA(i).CREATED_BY          :=DATA_REC.CREATED_BY;
189 	SORTED_DATA(i).CREATION_DATE       :=DATA_REC.CREATION_DATE;
190 	SORTED_DATA(i).LAST_UPDATE_DATE    :=DATA_REC.LAST_UPDATE_DATE;
191 	SORTED_DATA(i).ENABLE_FLAG         :=DATA_REC.ENABLE_FLAG;
192       UPDATE GMA_ACTDATA_WF
193       SET SORT_ORDER = i
194       WHERE ACTIVITY_ID          = DATA_REC.ACTIVITY_ID
195 	  AND NVL(COLUMN_VALUE1,0) = NVL(DATA_REC.COLUMN_VALUE1,0)
196 	  AND NVL(COLUMN_VALUE2,0) = NVL(DATA_REC.COLUMN_VALUE2,0)
197 	  AND NVL(COLUMN_VALUE3,0) =NVL(DATA_REC.COLUMN_VALUE3,0)
198 	  AND NVL(COLUMN_VALUE4,0) =NVL(DATA_REC.COLUMN_VALUE4,0)
199 	  AND NVL(COLUMN_VALUE5,0) =NVL(DATA_REC.COLUMN_VALUE5,0)
200 	  AND NVL(COLUMN_VALUE6,0) =NVL(DATA_REC.COLUMN_VALUE6,0)
201 	  AND NVL(COLUMN_VALUE7,0) =NVL(DATA_REC.COLUMN_VALUE7,0)
202 	  AND NVL(COLUMN_VALUE8,0) =NVL(DATA_REC.COLUMN_VALUE8,0)
203 	  AND NVL(COLUMN_VALUE9,0) =NVL(DATA_REC.COLUMN_VALUE9,0)
204 	  AND NVL(COLUMN_VALUE10,0)=NVL(DATA_REC.COLUMN_VALUE10,0);
205         i:=i+1;
206       END LOOP;
207       CLOSE RET_DATA;
208       COUNTER1 := COUNTER1 + 1;
209       IF  COUNTER1 = 10 THEN
210           l_where10 :=  ' AND COLUMN_VALUE10 IS NULL  ';
211       ELSIF COUNTER1 = 9 THEN
212           l_where9 :=  ' AND COLUMN_VALUE9 IS NULL  ';
213       ELSIF COUNTER1 = 8 THEN
214           l_where8 :=  ' AND COLUMN_VALUE8 IS NULL  ';
215       ELSIF COUNTER1 = 7 THEN
216           l_where7 :=  ' AND COLUMN_VALUE7 IS NULL  ';
217       ELSIF COUNTER1 = 6 THEN
218           l_where6 :=  ' AND COLUMN_VALUE6 IS NULL  ';
219       ELSIF COUNTER1 = 5 THEN
220           l_where5 :=  ' AND COLUMN_VALUE5 IS NULL  ';
221       ELSIF COUNTER1 = 4 THEN
222           l_where4 :=  ' AND COLUMN_VALUE4 IS NULL  ';
223       ELSIF COUNTER1 = 3 THEN
224           l_where3 :=  ' AND COLUMN_VALUE3 IS NULL  ';
225       ELSIF COUNTER1 = 2 THEN
226           l_where2 :=  ' AND COLUMN_VALUE2 IS NULL  ';
227       ELSIF COUNTER1 = 1 THEN
228           l_where1 :=  ' AND COLUMN_VALUE1 IS NULL  ';
229       END IF;
230     ELSE
231       EXIT;
232     END IF;
233   END LOOP;
234 END;
235 PROCEDURE SORT_PROC_DATA (P_WF_ITEM_TYPE VARCHAR2,
236                           P_PROCESS_NAME VARCHAR2,
237                       SORTED_DATA IN OUT NOCOPY PROC_SORTED_DATA_TBL_TYPE)  IS
238   TYPE RETRIEVE_DATA IS REF CURSOR;
239   RET_DATA   RETRIEVE_DATA;  -- declare cursor variable
240   sql_stmt   VARCHAR2(300);
241   DATA_REC   GMA_PROCDATA_WF%ROWTYPE;
242   COUNTER1   NUMBER(5) := 10;
243   l_where1   VARCHAR2(40) := ' AND COLUMN_VALUE1 IS NOT NULL  ';
244   l_where2   VARCHAR2(40) := ' AND COLUMN_VALUE2 IS NOT NULL  ';
245   l_where3   VARCHAR2(40) := ' AND COLUMN_VALUE3 IS NOT NULL  ';
249   l_where7   VARCHAR2(40) := ' AND COLUMN_VALUE7 IS NOT NULL  ';
246   l_where4   VARCHAR2(40) := ' AND COLUMN_VALUE4 IS NOT NULL  ';
247   l_where5   VARCHAR2(40) := ' AND COLUMN_VALUE5 IS NOT NULL  ';
248   l_where6   VARCHAR2(40) := ' AND COLUMN_VALUE6 IS NOT NULL  ';
250   l_where8   VARCHAR2(40) := ' AND COLUMN_VALUE8 IS NOT NULL  ';
251   l_where9   VARCHAR2(40) := ' AND COLUMN_VALUE9 IS NOT NULL  ';
252   l_where10  VARCHAR2(40) := ' AND COLUMN_VALUE10 IS NOT NULL  ';
253   sql_stmt1  VARCHAR2(4000);
254   no_cols    NUMBER(5);
255   set_where  NUMBER(5);
256   i    INTEGER := 1;
257 BEGIN
258   sql_stmt := 'SELECT * FROM GMA_PROCDATA_WF WHERE WF_ITEM_TYPE = ' ||''''||P_WF_ITEM_TYPE ||'''' ||
259               '   AND  PROCESS_NAME  = ' || ''''||P_PROCESS_NAME ||'''' ||'   ';
260   LOOP
261     IF COUNTER1 > 0 THEN
262                   /* Make the last column value in hierarchy NULL */
263       sql_stmt1 := sql_stmt || l_where1 || l_where2 || l_where3
264                   || l_where4 || l_where5 || l_where6
265                   || l_where7 || l_where8 || l_where9
266                   || l_where10;
267       OPEN RET_DATA FOR sql_stmt1;
268       LOOP
269         FETCH RET_DATA INTO DATA_REC;
270         EXIT WHEN RET_DATA%NOTFOUND;
271 	SORTED_DATA(i).WF_ITEM_TYPE        :=DATA_REC.WF_ITEM_TYPE;
272 	SORTED_DATA(i).PROCESS_NAME        :=DATA_REC.PROCESS_NAME;
273 	SORTED_DATA(i).COLUMN_NAME1        :=DATA_REC.COLUMN_NAME1;
274 	SORTED_DATA(i).COLUMN_VALUE1       :=DATA_REC.COLUMN_VALUE1;
275 	SORTED_DATA(i).COLUMN_NAME2        :=DATA_REC.COLUMN_NAME2;
276 	SORTED_DATA(i).COLUMN_VALUE2       :=DATA_REC.COLUMN_VALUE2;
277 	SORTED_DATA(i).COLUMN_NAME3        :=DATA_REC.COLUMN_NAME3;
278 	SORTED_DATA(i).COLUMN_VALUE3       :=DATA_REC.COLUMN_VALUE3;
279 	SORTED_DATA(i).COLUMN_NAME4        :=DATA_REC.COLUMN_NAME4;
280 	SORTED_DATA(i).COLUMN_VALUE4       :=DATA_REC.COLUMN_VALUE4;
281 	SORTED_DATA(i).COLUMN_NAME5        :=DATA_REC.COLUMN_NAME5;
282 	SORTED_DATA(i).COLUMN_VALUE5       :=DATA_REC.COLUMN_VALUE5;
283 	SORTED_DATA(i).COLUMN_NAME6        :=DATA_REC.COLUMN_NAME6;
284 	SORTED_DATA(i).COLUMN_VALUE6       :=DATA_REC.COLUMN_VALUE6;
285 	SORTED_DATA(i).COLUMN_NAME7        :=DATA_REC.COLUMN_NAME7;
286 	SORTED_DATA(i).COLUMN_VALUE7       :=DATA_REC.COLUMN_VALUE7;
287 	SORTED_DATA(i).COLUMN_NAME8        :=DATA_REC.COLUMN_NAME8;
288 	SORTED_DATA(i).COLUMN_VALUE8       :=DATA_REC.COLUMN_VALUE8;
289 	SORTED_DATA(i).COLUMN_NAME9        :=DATA_REC.COLUMN_NAME9;
290 	SORTED_DATA(i).COLUMN_VALUE9       :=DATA_REC.COLUMN_VALUE9;
291 	SORTED_DATA(i).COLUMN_NAME10       :=DATA_REC.COLUMN_NAME10;
292 	SORTED_DATA(i).COLUMN_VALUE10      :=DATA_REC.COLUMN_VALUE10;
293 	SORTED_DATA(i).ROLE                :=DATA_REC.ROLE;
294 	SORTED_DATA(i).LAST_UPDATE_LOGIN   :=DATA_REC.LAST_UPDATE_LOGIN;
295 	SORTED_DATA(i).LAST_UPDATED_BY     :=DATA_REC.LAST_UPDATED_BY;
296 	SORTED_DATA(i).CREATED_BY          :=DATA_REC.CREATED_BY;
297 	SORTED_DATA(i).CREATION_DATE       :=DATA_REC.CREATION_DATE;
298 	SORTED_DATA(i).LAST_UPDATE_DATE    :=DATA_REC.LAST_UPDATE_DATE;
299 	SORTED_DATA(i).ENABLE_FLAG         :=DATA_REC.ENABLE_FLAG;
300       UPDATE GMA_PROCDATA_WF
301       SET SORT_ORDER = i
302       WHERE WF_ITEM_TYPE          = DATA_REC.WF_ITEM_TYPE
303         AND PROCESS_NAME          = DATA_REC.PROCESS_NAME
304 	  AND NVL(COLUMN_VALUE1,0) = NVL(DATA_REC.COLUMN_VALUE1,0)
305 	  AND NVL(COLUMN_VALUE2,0) = NVL(DATA_REC.COLUMN_VALUE2,0)
306 	  AND NVL(COLUMN_VALUE3,0) =NVL(DATA_REC.COLUMN_VALUE3,0)
307 	  AND NVL(COLUMN_VALUE4,0) =NVL(DATA_REC.COLUMN_VALUE4,0)
308 	  AND NVL(COLUMN_VALUE5,0) =NVL(DATA_REC.COLUMN_VALUE5,0)
309 	  AND NVL(COLUMN_VALUE6,0) =NVL(DATA_REC.COLUMN_VALUE6,0)
310 	  AND NVL(COLUMN_VALUE7,0) =NVL(DATA_REC.COLUMN_VALUE7,0)
311 	  AND NVL(COLUMN_VALUE8,0) =NVL(DATA_REC.COLUMN_VALUE8,0)
312 	  AND NVL(COLUMN_VALUE9,0) =NVL(DATA_REC.COLUMN_VALUE9,0)
313 	  AND NVL(COLUMN_VALUE10,0)=NVL(DATA_REC.COLUMN_VALUE10,0);
314         i:=i+1;
315       END LOOP;
316       CLOSE RET_DATA;
317       IF  COUNTER1 = 10 THEN
318           l_where10 :=  ' AND COLUMN_VALUE10 IS NULL  ';
319       ELSIF COUNTER1 = 9 THEN
320           l_where9 :=  ' AND COLUMN_VALUE9 IS NULL  ';
321       ELSIF COUNTER1 = 8 THEN
322           l_where8 :=  ' AND COLUMN_VALUE8 IS NULL  ';
323       ELSIF COUNTER1 = 7 THEN
324           l_where7 :=  ' AND COLUMN_VALUE7 IS NULL  ';
325       ELSIF COUNTER1 = 6 THEN
326           l_where6 :=  ' AND COLUMN_VALUE6 IS NULL  ';
327       ELSIF COUNTER1 = 5 THEN
328           l_where5 :=  ' AND COLUMN_VALUE5 IS NULL  ';
329       ELSIF COUNTER1 = 4 THEN
330           l_where4 :=  ' AND COLUMN_VALUE4 IS NULL  ';
331       ELSIF COUNTER1 = 3 THEN
332           l_where3 :=  ' AND COLUMN_VALUE3 IS NULL  ';
333       ELSIF COUNTER1 = 2 THEN
334           l_where2 :=  ' AND COLUMN_VALUE2 IS NULL  ';
335       ELSIF COUNTER1 = 1 THEN
336           l_where1 :=  ' AND COLUMN_VALUE1 IS NULL  ';
337       END IF;
338       COUNTER1 := COUNTER1 - 1;
339     ELSE
340       EXIT;
341     END IF;
342   END LOOP;
343   SELECT count(*) INTO no_cols
344   from  GMA_PROCCOL_WF_B
348   l_where2   := ' AND COLUMN_VALUE2 IS NOT NULL  ';
345   WHERE WF_ITEM_TYPE = P_WF_ITEM_TYPE
346     AND PROCESS_NAME = P_PROCESS_NAME;
347   l_where1   := ' AND COLUMN_VALUE1 IS NULL  ';
349   l_where3   := ' AND COLUMN_VALUE3 IS NOT NULL  ';
350   l_where4   := ' AND COLUMN_VALUE4 IS NOT NULL  ';
351   l_where5   := ' AND COLUMN_VALUE5 IS NOT NULL  ';
352   l_where6   := ' AND COLUMN_VALUE6 IS NOT NULL  ';
353   l_where7   := ' AND COLUMN_VALUE7 IS NOT NULL  ';
354   l_where8   := ' AND COLUMN_VALUE8 IS NOT NULL  ';
355   l_where9   := ' AND COLUMN_VALUE9 IS NOT NULL  ';
356   l_where10  := ' AND COLUMN_VALUE10 IS NOT NULL  ';
357   COUNTER1 := 10;
358   set_where := no_cols;
359   no_cols := 10 - no_cols;
360   LOOP
361     IF no_cols >0 THEN
362        IF  COUNTER1 = 10 THEN
363           l_where10 :=  '  ';
364       ELSIF COUNTER1 = 9 THEN
365           l_where9 :=  '   ';
366       ELSIF COUNTER1 = 8 THEN
367           l_where8 :=  '   ';
368       ELSIF COUNTER1 = 7 THEN
369           l_where7 :=  '   ';
370       ELSIF COUNTER1 = 6 THEN
371           l_where6 :=  '   ';
372       ELSIF COUNTER1 = 5 THEN
373           l_where5 :=  '   ';
374       ELSIF COUNTER1 = 4 THEN
375           l_where4 :=  '  ';
376       ELSIF COUNTER1 = 3 THEN
377           l_where3 :=  '  ';
378       ELSIF COUNTER1 = 2 THEN
379           l_where2 :=  '  ';
380       ELSIF COUNTER1 = 1 THEN
381           l_where1 :=  '  ';
382       END IF;
383       no_cols := no_cols - 1;
384       counter1 := counter1 -1;
385     ELSE
386       EXIT;
387     END IF;
388   END LOOP;
389   COUNTER1 := 1;
390   LOOP
391     IF COUNTER1 <= Set_where THEN
392                   /* Make the last column value in hierarchy NULL */
393       sql_stmt1 := sql_stmt || l_where1 || l_where2 || l_where3
394                   || l_where4 || l_where5 || l_where6
395                   || l_where7 || l_where8 || l_where9
396                   || l_where10;
397       OPEN RET_DATA FOR sql_stmt1;
398       LOOP
399         FETCH RET_DATA INTO DATA_REC;
400         EXIT WHEN RET_DATA%NOTFOUND;
401 	SORTED_DATA(i).WF_ITEM_TYPE        :=DATA_REC.WF_ITEM_TYPE;
402 	SORTED_DATA(i).PROCESS_NAME        :=DATA_REC.PROCESS_NAME;
403 	SORTED_DATA(i).COLUMN_NAME1        :=DATA_REC.COLUMN_NAME1;
404 	SORTED_DATA(i).COLUMN_VALUE1       :=DATA_REC.COLUMN_VALUE1;
405 	SORTED_DATA(i).COLUMN_NAME2        :=DATA_REC.COLUMN_NAME2;
406 	SORTED_DATA(i).COLUMN_VALUE2       :=DATA_REC.COLUMN_VALUE2;
407 	SORTED_DATA(i).COLUMN_NAME3        :=DATA_REC.COLUMN_NAME3;
408 	SORTED_DATA(i).COLUMN_VALUE3       :=DATA_REC.COLUMN_VALUE3;
409 	SORTED_DATA(i).COLUMN_NAME4        :=DATA_REC.COLUMN_NAME4;
410 	SORTED_DATA(i).COLUMN_VALUE4       :=DATA_REC.COLUMN_VALUE4;
411 	SORTED_DATA(i).COLUMN_NAME5        :=DATA_REC.COLUMN_NAME5;
412 	SORTED_DATA(i).COLUMN_VALUE5       :=DATA_REC.COLUMN_VALUE5;
413 	SORTED_DATA(i).COLUMN_NAME6        :=DATA_REC.COLUMN_NAME6;
414 	SORTED_DATA(i).COLUMN_VALUE6       :=DATA_REC.COLUMN_VALUE6;
415 	SORTED_DATA(i).COLUMN_NAME7        :=DATA_REC.COLUMN_NAME7;
416 	SORTED_DATA(i).COLUMN_VALUE7       :=DATA_REC.COLUMN_VALUE7;
417 	SORTED_DATA(i).COLUMN_NAME8        :=DATA_REC.COLUMN_NAME8;
418 	SORTED_DATA(i).COLUMN_VALUE8       :=DATA_REC.COLUMN_VALUE8;
419 	SORTED_DATA(i).COLUMN_NAME9        :=DATA_REC.COLUMN_NAME9;
420 	SORTED_DATA(i).COLUMN_VALUE9       :=DATA_REC.COLUMN_VALUE9;
421 	SORTED_DATA(i).COLUMN_NAME10       :=DATA_REC.COLUMN_NAME10;
422 	SORTED_DATA(i).COLUMN_VALUE10      :=DATA_REC.COLUMN_VALUE10;
423 	SORTED_DATA(i).ROLE                :=DATA_REC.ROLE;
424 	SORTED_DATA(i).LAST_UPDATE_LOGIN   :=DATA_REC.LAST_UPDATE_LOGIN;
425 	SORTED_DATA(i).LAST_UPDATED_BY     :=DATA_REC.LAST_UPDATED_BY;
426 	SORTED_DATA(i).CREATED_BY          :=DATA_REC.CREATED_BY;
427 	SORTED_DATA(i).CREATION_DATE       :=DATA_REC.CREATION_DATE;
428 	SORTED_DATA(i).LAST_UPDATE_DATE    :=DATA_REC.LAST_UPDATE_DATE;
429 	SORTED_DATA(i).ENABLE_FLAG         :=DATA_REC.ENABLE_FLAG;
430       UPDATE GMA_PROCDATA_WF
431       SET SORT_ORDER = i
432       WHERE WF_ITEM_TYPE          = DATA_REC.WF_ITEM_TYPE
433         AND PROCESS_NAME          = DATA_REC.PROCESS_NAME
434 	  AND NVL(COLUMN_VALUE1,0) = NVL(DATA_REC.COLUMN_VALUE1,0)
435 	  AND NVL(COLUMN_VALUE2,0) = NVL(DATA_REC.COLUMN_VALUE2,0)
436 	  AND NVL(COLUMN_VALUE3,0) =NVL(DATA_REC.COLUMN_VALUE3,0)
437 	  AND NVL(COLUMN_VALUE4,0) =NVL(DATA_REC.COLUMN_VALUE4,0)
438 	  AND NVL(COLUMN_VALUE5,0) =NVL(DATA_REC.COLUMN_VALUE5,0)
439 	  AND NVL(COLUMN_VALUE6,0) =NVL(DATA_REC.COLUMN_VALUE6,0)
440 	  AND NVL(COLUMN_VALUE7,0) =NVL(DATA_REC.COLUMN_VALUE7,0)
441 	  AND NVL(COLUMN_VALUE8,0) =NVL(DATA_REC.COLUMN_VALUE8,0)
442 	  AND NVL(COLUMN_VALUE9,0) =NVL(DATA_REC.COLUMN_VALUE9,0)
443 	  AND NVL(COLUMN_VALUE10,0)=NVL(DATA_REC.COLUMN_VALUE10,0);
444         i:=i+1;
445       END LOOP;
446       CLOSE RET_DATA;
447       COUNTER1 := COUNTER1 + 1;
448       IF  COUNTER1 = 10 THEN
449           l_where10 :=  ' AND COLUMN_VALUE10 IS NULL  ';
450       ELSIF COUNTER1 = 9 THEN
451           l_where9 :=  ' AND COLUMN_VALUE9 IS NULL  ';
452       ELSIF COUNTER1 = 8 THEN
453           l_where8 :=  ' AND COLUMN_VALUE8 IS NULL  ';
454       ELSIF COUNTER1 = 7 THEN
455           l_where7 :=  ' AND COLUMN_VALUE7 IS NULL  ';
456       ELSIF COUNTER1 = 6 THEN
457           l_where6 :=  ' AND COLUMN_VALUE6 IS NULL  ';
458       ELSIF COUNTER1 = 5 THEN
459           l_where5 :=  ' AND COLUMN_VALUE5 IS NULL  ';
460       ELSIF COUNTER1 = 4 THEN
461           l_where4 :=  ' AND COLUMN_VALUE4 IS NULL  ';
462       ELSIF COUNTER1 = 3 THEN
463           l_where3 :=  ' AND COLUMN_VALUE3 IS NULL  ';
464       ELSIF COUNTER1 = 2 THEN
465           l_where2 :=  ' AND COLUMN_VALUE2 IS NULL  ';
466       ELSIF COUNTER1 = 1 THEN
467           l_where1 :=  ' AND COLUMN_VALUE1 IS NULL  ';
468       END IF;
469     ELSE
470       EXIT;
471     END IF;
472   END LOOP;
473 END;
474 END;
475 
476