DBA Data[Home] [Help]

PACKAGE BODY: APPS.FEM_MULTI_PROC_PKG

Source


1 PACKAGE BODY FEM_Multi_Proc_Pkg AS
2 -- $Header: fem_mp_utl.plb 120.6.12010000.2 2008/10/06 23:37:31 huli ship $
3 
4 --------------------
5 -- Package Constants
6 --------------------
7 c_mp_sub_prg   CONSTANT  VARCHAR2(30) := 'FEM_MPSUBREQ';
8 c_mp_app_id    CONSTANT  NUMBER := 274;  -- App ID for FEM
9 
10 c_max_procs    CONSTANT  NUMBER := 8;
11 
12 c_ctl_table    CONSTANT  VARCHAR2(30) := 'FEM_MP_PROCESS_CTL_T';
13 c_arg_table    CONSTANT  VARCHAR2(30) := 'FEM_MP_PROCESS_ARGS_T';
14 
15 c_log_level_1  CONSTANT  NUMBER  := fnd_log.level_statement;
16 c_log_level_2  CONSTANT  NUMBER  := fnd_log.level_procedure;
17 c_log_level_3  CONSTANT  NUMBER  := fnd_log.level_event;
18 c_log_level_4  CONSTANT  NUMBER  := fnd_log.level_exception;
19 c_log_level_5  CONSTANT  NUMBER  := fnd_log.level_error;
20 c_log_level_6  CONSTANT  NUMBER  := fnd_log.level_unexpected;
21 
22 e_soft_kill         EXCEPTION;
23 e_bad_mp_settings   EXCEPTION;
24 
25 
26 /**************************************************************************
27  **************************************************************************
28 
29                          ========================
30                               Engine_Params
31                          ========================
32 
33  **************************************************************************
34  **************************************************************************/
35 
36 PROCEDURE Engine_Params (
37 p_eng_prg         IN  VARCHAR2,
38 x_prms_in         OUT NOCOPY NUMBER
39 )
40 IS
41 
42 t_overload        DBMS_DESCRIBE.NUMBER_TABLE;
43 t_position        DBMS_DESCRIBE.NUMBER_TABLE;
44 t_level           DBMS_DESCRIBE.NUMBER_TABLE;
45 t_arg_name        DBMS_DESCRIBE.VARCHAR2_TABLE;
46 t_datatype        DBMS_DESCRIBE.NUMBER_TABLE;
47 t_def_val         DBMS_DESCRIBE.NUMBER_TABLE;
48 t_io_mode         DBMS_DESCRIBE.NUMBER_TABLE;
49 t_length          DBMS_DESCRIBE.NUMBER_TABLE;
50 t_precision       DBMS_DESCRIBE.NUMBER_TABLE;
51 t_scale           DBMS_DESCRIBE.NUMBER_TABLE;
52 t_radix           DBMS_DESCRIBE.NUMBER_TABLE;
53 t_spare           DBMS_DESCRIBE.NUMBER_TABLE;
54 i_idx             NUMBER := 0;
55 
56 BEGIN
57 
58 /**************************************************************************
59 
60                   Get number of Engine IN parameters
61 
62  **************************************************************************/
63 
64    DBMS_DESCRIBE.DESCRIBE_PROCEDURE
65    (
66     p_eng_prg,
67     null,
68     null,
69     t_overload,
70     t_position,
71     t_level,
72     t_arg_name,
73     t_datatype,
74     t_def_val,
75     t_io_mode,
76     t_length,
77     t_precision,
78     t_scale,
79     t_radix,
80     t_spare
81    );
82 
83    x_prms_in := 0;
84    LOOP
85       i_idx := i_idx + 1;
86       IF t_io_mode(i_idx) = 0
87       THEN
88          x_prms_in := x_prms_in + 1;
89       END IF;
90    END LOOP;
91 
92 EXCEPTION
93    WHEN no_data_found THEN
94       RETURN;
95 
96 END Engine_Params;
97 
98 
99 /**************************************************************************
100                       ==================================
101                            Put_Distinct_Data_Slices
102                       ==================================
103 -- This procedure does an INSERT/SELECT to insert all data slices for
104 -- one table partition (or for the entire table if not partitioned)
105 -- for the Distinct Values data slicing method only.  Note that for distinct
106 -- data slicing, any null values in the input data will be ignored (and
107 -- they will not be reported as errors).  The MP framework assumes that any
108 -- column selected as a data slicing column will not contain any null values.
109 -- (All rows are processed when data slicing is off, since there are no data
110 -- slicing columns defined for the "no slicing" method).
111  **************************************************************************/
112 
113 PROCEDURE Put_Distinct_Data_Slices (
114    p_rownum       IN OUT  NOCOPY NUMBER,
115    p_req_id       IN      NUMBER,
116    p_rule_id      IN      NUMBER,
117    p_data_table   IN      VARCHAR2,
118    p_condition    IN      VARCHAR2,
119    p_data_slc     IN      VARCHAR2 DEFAULT NULL,
120    p_part_name    IN      VARCHAR2 DEFAULT NULL)
121 IS
122 
123    v_block             VARCHAR2(80) := 'fem.plsql.fem_mp.put_distinct_data_slices';
124    v_condition         VARCHAR2(32767);
125    v_part_clause       VARCHAR2(50);
126    v_sql_cmd           VARCHAR2(32766);
127 
128 BEGIN
129 
130    v_condition := NVL(REPLACE(p_condition,'WHERE',''),'1=1');
131 
132    FEM_ENGINES_PKG.TECH_MESSAGE
133     (p_severity => c_log_level_2,
134      p_module => v_block||'.p_part_name{580}',
135      p_msg_text => p_part_name);
136    FEM_ENGINES_PKG.TECH_MESSAGE
137     (p_severity => c_log_level_2,
138      p_module => v_block||'.p_data_slc{581}',
139      p_msg_text => p_data_slc);
140    FEM_ENGINES_PKG.TECH_MESSAGE
141     (p_severity => c_log_level_2,
142      p_module => v_block||'.p_rownum{582}',
143      p_msg_text => TO_CHAR(p_rownum));
144 
145    IF (p_part_name IS NOT NULL)
146    THEN
147       v_part_clause := ' PARTITION (' || p_part_name || ')';
148    ELSE
149       v_part_clause := '';
150    END if;
151 
152    v_sql_cmd :=
153       'INSERT INTO fem_mp_process_ctl_t' ||
154          '(req_id, rule_id, slice_id, partition, data_slice, process_num, '||
155           'rows_processed, rows_loaded, rows_rejected, status, message)'||
156        ' SELECT '||
157            p_req_id || ',' || p_rule_id || ',rownum +' || p_rownum ||
158            ', ''' || p_part_name || ''', data_slice, 0, null, null, null, null, null' ||
159        ' FROM ' ||
160           '(SELECT DISTINCT ' || p_data_slc || ' data_slice' ||
161           ' FROM ' || p_data_table || v_part_clause ||
162           ' WHERE ' || v_condition || ')';
163 
164    FEM_ENGINES_PKG.TECH_MESSAGE
165     (p_severity => c_log_level_1,
166      p_module => v_block||'.v_sql_cmd{583}',
167      p_msg_text => v_sql_cmd);
168 
169    EXECUTE IMMEDIATE v_sql_cmd;
170    COMMIT;
171 
172    SELECT NVL(MAX(slice_id), 0)
173    INTO p_rownum
174    FROM FEM_MP_PROCESS_CTL_T
175    WHERE req_id = p_req_id;
176 
177    FEM_ENGINES_PKG.TECH_MESSAGE
178     (p_severity => c_log_level_2,
179      p_module => v_block||'.p_rownum{584}',
180      p_msg_text => p_rownum);
181 
182 END Put_Distinct_Data_Slices;
183 
184 
185 /**************************************************************************
186                         ==================================
187                              Put_Range_Slices_Unique
188                         ==================================
189 -- This procedure does an INSERT/SELECT using the NTILE SQL function
190 -- against the input table to insert all data slices for one table
191 -- partition (or for the entire table if not partitioned) for the
192 -- Value Ranges data slicing method only, and only for columns known to
193 -- be distinct and non-null within the input data.
194 -- Currently, this only includes
195 --    ROWID (for all tables using ROWID for slicing) and
196 --    CREATION_ROW_SEQUENCE on FEM_BALANCES.
197 -- Future optimizations could include ACTIVITY_ID for the
198 -- CALC_ACT_RATE_FACTORS and CALC_ACT_RATE_VALUES steps of the ACTIVITY_RATE
199 -- object type, and SEQ_ID for the CALC_DRIVER_VALUES of the ACTIVITY_RATE
200 -- object type.  Currently multiprocessing is disabled for the Activity Rate
201 -- engine.
202 -- Further enhancements could include CUSTOMER_ID for the Value Index
203 -- calculation, and possibly other Customer Profit object types as well
204 -- when multiprocessing is enabled for those object types.
205  **************************************************************************/
206 
207 PROCEDURE Put_Range_Slices_Unique (
208    p_rownum       IN OUT  NOCOPY NUMBER,
209    p_req_id       IN      NUMBER,
210    p_rule_id      IN      NUMBER,
211    p_num_slices   IN      NUMBER,
212    p_data_table   IN      VARCHAR2,
213    p_slc_col      IN      VARCHAR2,
214    p_condition    IN      VARCHAR2,
215    p_part_name    IN      VARCHAR2 DEFAULT NULL)
216 IS
217 
218    v_block             VARCHAR2(80) := 'fem.plsql.fem_mp.put_range_slices_unique';
219    v_condition         VARCHAR2(32766);
220    v_part_clause       VARCHAR2(50);
221    v_sql_cmd           VARCHAR2(32766);
222 
223 BEGIN
224 
225    v_condition := NVL(REPLACE(p_condition,'WHERE',''),'1=1');
226 
227    FEM_ENGINES_PKG.TECH_MESSAGE
228     (p_severity => c_log_level_2,
229      p_module => v_block||'.p_part_name{580}',
230      p_msg_text => p_part_name);
231    FEM_ENGINES_PKG.TECH_MESSAGE
232     (p_severity => c_log_level_2,
233      p_module => v_block||'.p_slc_col{581}',
234      p_msg_text => p_slc_col);
235    FEM_ENGINES_PKG.TECH_MESSAGE
236     (p_severity => c_log_level_2,
237      p_module => v_block||'.p_rownum{582}',
238      p_msg_text => TO_CHAR(p_rownum));
239 
240    IF (p_part_name IS NOT NULL)
241    THEN
242       v_part_clause := ' PARTITION (' || p_part_name || ')';
243    ELSE
244       v_part_clause := '';
245    END if;
246 
247    v_sql_cmd :=
248       'INSERT INTO fem_mp_process_ctl_t ' ||
249         '(req_id,rule_id,' ||
250          'slice_id,partition,' ||
251          'data_slice,' ||
252          'process_num,rows_processed,rows_loaded,' ||
253          'rows_rejected,status,message) ' ||
254         'SELECT ' ||
255            p_req_id || ', ' || p_rule_id || ', ' ||
256            'rownum + ' || p_rownum || ', ''' || p_part_name || ''', ' ||
257            'minval||''{#}''||maxval' ||
258            ', 0, null, null, ' ||
259            'null, null, null ' ||
260         'FROM ' ||
261           '(SELECT ' ||
262               'MIN(slice_column) minval, ' ||
263               'MAX(slice_column) maxval ' ||
264            'FROM ' ||
265              '(SELECT ' ||
266                  p_slc_col || ' slice_column, ' ||
267                  'NTILE(' || p_num_slices || ') ' ||
268                    'OVER (ORDER BY ' || p_slc_col || ') tile ' ||
269               'FROM ' || p_data_table || v_part_clause ||
270              ' WHERE ' || v_condition || ') ' ||
271            'GROUP BY tile)';
272 
273    FEM_ENGINES_PKG.TECH_MESSAGE
274     (p_severity => c_log_level_1,
275      p_module => v_block||'.v_sql_cmd{583}',
276      p_msg_text => v_sql_cmd);
277 
278    EXECUTE IMMEDIATE v_sql_cmd;
279    COMMIT;
280 
281    SELECT NVL(MAX(slice_id), 0)
282    INTO p_rownum
283    FROM FEM_MP_PROCESS_CTL_T
284    WHERE req_id = p_req_id;
285 
286    FEM_ENGINES_PKG.TECH_MESSAGE
287     (p_severity => c_log_level_2,
288      p_module => v_block||'.p_rownum{584}',
289      p_msg_text => p_rownum);
290 
291 END Put_Range_Slices_Unique;
292 
293 
294 /**************************************************************************
295                           =========================
296                                Put_Data_Slice
297                           =========================
298 -- Inserts one data slice into the process control table.  Used by the
299 -- Put_Range_Slices_Non_Unique procedure to insert data slices one at a
300 -- time, and used by Build_Data_Slices to create a single dummy data
301 -- slice when slicing is disabled or when a data slice column is not
302 -- specified.
303  **************************************************************************/
304 
305 PROCEDURE Put_Data_Slice(
306    p_rownum       IN OUT  NOCOPY NUMBER,
307    p_req_id       IN      NUMBER,
308    p_rule_id      IN      NUMBER,
309    p_data_slc     IN      VARCHAR2,
310    p_part_name    IN      VARCHAR2 DEFAULT NULL)
311 IS
312 
313    v_block        VARCHAR2(80) := 'fem.plsql.fem_mp.put_data_slice';
314 
315 BEGIN
316 
317    FEM_ENGINES_PKG.TECH_MESSAGE
318     (p_severity => c_log_level_2,
319      p_module => v_block||'.p_rownum{582}',
320      p_msg_text => TO_CHAR(p_rownum));
321 
322    p_rownum := p_rownum + 1;
323 
324    INSERT INTO fem_mp_process_ctl_t
325      (req_id, rule_id, slice_id, partition, data_slice, process_num,
326       rows_processed, rows_loaded, rows_rejected, status, message)
327    VALUES
328      (p_req_id, p_rule_id, p_rownum, p_part_name, p_data_slc, 0,
329       null, null, null, null, null);
330 
331    COMMIT;
332 
333    FEM_ENGINES_PKG.TECH_MESSAGE
334     (p_severity => c_log_level_2,
335      p_module => v_block||'.p_rownum{584}',
336      p_msg_text => TO_CHAR(p_rownum));
337 
338 END Put_Data_Slice;
339 
340 
341 /**************************************************************************
342                     =====================================
343                          Put_Range_Slices_Non_Unique
344                     =====================================
345 -- For data slicing columns that are not guaranteed to be unique within the
346 -- input data, this procedure populates the process control table with data
347 -- slices for the current partition of the input table (or for the entire
348 -- table if not partitioned).  It loops through the rows returned by a
349 -- dynamic SELECT statement against the input table using the NTILE function,
350 -- and makes necessary adjustments to the endpoints, whenever the NTILE
351 -- function separates rows having the same value of the data slicing column
352 -- into more than one data slice, then inserts the adjusted data slice into
353 -- the process control table.  Note that value ranges data slicing on non-
354 -- unique columns, any null values in the input data will be ignored (and
355 -- they will not be reported as errors).  The MP framework assumes that any
356 -- column selected as a data slicing column will not contain any null values.
357 -- (All rows are processed when data slicing is off, since there are no data
358 -- slicing columns defined for the "no slicing" method).
359  **************************************************************************/
360 
361 PROCEDURE Put_Range_Slices_Non_Unique (
362    p_rownum       IN OUT  NOCOPY NUMBER,
363    p_req_id       IN      NUMBER,
364    p_rule_id      IN      NUMBER,
365    p_num_slices   IN      NUMBER,
366    p_data_table   IN      VARCHAR2,
367    p_slc_col      IN      VARCHAR2,
368    p_col_type     IN      VARCHAR2,
369    p_condition    IN      VARCHAR2,
373    v_block        VARCHAR2(80) := 'fem.plsql.fem_mp.put_range_slices_non_unique';
370    p_part_name    IN      VARCHAR2 DEFAULT NULL)
371 IS
372 
374    v_condition    VARCHAR2(32767);
375    v_part_clause  VARCHAR2(50);
376    v_sql_cmd1     VARCHAR2(32766);
377    v_sql_cmd2     VARCHAR2(32766);
378    v_last_hi      VARCHAR2(150);
379    v_lo_val       VARCHAR2(150);
380    v_hi_val       VARCHAR2(150);
381    v_data_slc     VARCHAR2(4000);
382 
383    TYPE c_ref_curs    IS REF CURSOR;
384    c_col_slc          c_ref_curs;
385 
386 BEGIN
387 
388    v_condition := NVL(REPLACE(p_condition,'WHERE',''),'1=1');
389 
390    FEM_ENGINES_PKG.TECH_MESSAGE
391     (p_severity => c_log_level_2,
392      p_module => v_block||'.p_part_name{580}',
393      p_msg_text => p_part_name);
394    FEM_ENGINES_PKG.TECH_MESSAGE
395     (p_severity => c_log_level_2,
396      p_module => v_block||'.p_slc_col{581}',
397      p_msg_text => p_slc_col);
398    FEM_ENGINES_PKG.TECH_MESSAGE
399     (p_severity => c_log_level_2,
400      p_module => v_block||'.p_rownum{582}',
401      p_msg_text => TO_CHAR(p_rownum));
402 
403    IF (p_part_name IS NOT NULL)
404    THEN
405       v_part_clause := ' PARTITION (' || p_part_name || ')';
406    ELSE
407       v_part_clause := '';
408    END if;
409 
410    -- Bug 5365387.  Ordered results to ensure that slice range
411    -- values are ascending.
412    v_sql_cmd1 :=
413       'SELECT ' ||
414          'MIN(slice_column) minval, ' ||
415          'MAX(slice_column) maxval ' ||
416       'FROM ' ||
417         '(SELECT ' ||
418             p_slc_col || ' slice_column, ' ||
419             'NTILE(' || p_num_slices || ') ' ||
420               'OVER (ORDER BY ' || p_slc_col || ') tile ' ||
421          'FROM ' || p_data_table || v_part_clause ||
422         ' WHERE ' || v_condition || ') ' ||
423       'GROUP BY tile ' ||
424       'ORDER BY minval ASC';
425 
426    v_sql_cmd2 :=
427       'SELECT MIN(' || p_slc_col || ') ' ||
428       'FROM ' || p_data_table || v_part_clause ||
429      ' WHERE ' || v_condition ||
430        ' AND ' || p_slc_col || ' > :b_last_max';
431 
432    FEM_ENGINES_PKG.TECH_MESSAGE
433     (p_severity => c_log_level_1,
434      p_module => v_block||'.v_sql_cmd1{571}',
435      p_msg_text => v_sql_cmd1);
436    FEM_ENGINES_PKG.TECH_MESSAGE
437     (p_severity => c_log_level_1,
438      p_module => v_block||'.v_sql_cmd2{572}',
439      p_msg_text => v_sql_cmd2);
440 
441    IF (p_col_type = 'NUMBER')
442    THEN
443       v_last_hi := -999;
444    ELSE
445       v_last_hi := '!#$';
446    END IF;
447 
448    OPEN c_col_slc FOR
449       v_sql_cmd1;
450    LOOP
451       FETCH c_col_slc INTO v_lo_val, v_hi_val;
452       EXIT WHEN c_col_slc%NOTFOUND;
453 
454       FEM_ENGINES_PKG.TECH_MESSAGE
455        (p_severity => c_log_level_3,
456         p_module => v_block||'.ntile_min_max{574}',
457         p_msg_text => v_lo_val||'{#}'||v_hi_val);
458 
459       IF (p_col_type = 'NUMBER')
460       THEN
461          IF (TO_NUMBER(v_lo_val) <= TO_NUMBER(v_last_hi))
462          THEN
463             EXECUTE IMMEDIATE v_sql_cmd2
464             INTO v_lo_val
465             USING v_last_hi;
466 
467             FEM_ENGINES_PKG.TECH_MESSAGE
468              (p_severity => c_log_level_3,
469               p_module => v_block||'.adjusted_min_max{574.1}',
470               p_msg_text => v_lo_val||'{#}'||v_hi_val);
471          END IF;
472 
473          IF (TO_NUMBER(v_lo_val) > TO_NUMBER(v_hi_val))
474          THEN
475             v_hi_val := v_lo_val;
476 
477             FEM_ENGINES_PKG.TECH_MESSAGE
478              (p_severity => c_log_level_3,
479               p_module => v_block||'.adjusted_min_max{574.2}',
480               p_msg_text => v_lo_val||'{#}'||v_hi_val);
481          END IF;
482 
483       ELSE
484 
485          IF (v_lo_val <= v_last_hi)
486          THEN
487             EXECUTE IMMEDIATE v_sql_cmd2
488             INTO v_lo_val
489             USING v_last_hi;
490 
491             FEM_ENGINES_PKG.TECH_MESSAGE
492              (p_severity => c_log_level_3,
493               p_module => v_block||'.adjusted_min_max{575.1}',
494               p_msg_text => v_lo_val||'{#}'||v_hi_val);
495          END IF;
496 
497          IF (v_lo_val > v_hi_val)
498          THEN
499             v_hi_val := v_lo_val;
500 
501             FEM_ENGINES_PKG.TECH_MESSAGE
502              (p_severity => c_log_level_3,
503               p_module => v_block||'.adjusted_min_max{575.2}',
504               p_msg_text => v_lo_val||'{#}'||v_hi_val);
505          END IF;
506       END IF;
507 
508       IF (v_lo_val IS NULL)
509       THEN
510          EXIT;
511       END IF;
512 
513       v_data_slc := v_lo_val||'{#}'||v_hi_val;
514 
515       Put_Data_Slice(
516          p_rownum    => p_rownum,
517          p_req_id    => p_req_id,
518          p_rule_id   => p_rule_id,
519          p_data_slc  => v_data_slc,
520          p_part_name => p_part_name);
521 
522       v_last_hi := v_hi_val;
523 
524       FEM_ENGINES_PKG.TECH_MESSAGE
525        (p_severity => c_log_level_2,
529    END LOOP;
526         p_module => v_block||'.v_last_hi{576}',
527         p_msg_text => v_last_hi);
528 
530    CLOSE c_col_slc;
531 
532 END Put_Range_Slices_Non_Unique;
533 
534 
535 /**************************************************************************
536                          =============================
537                               Build_Data_Slices
538                          =============================
539  **************************************************************************/
540 
541 PROCEDURE Build_Data_Slices (
542    x_slc_pred       OUT     NOCOPY VARCHAR2,
543    x_part_code      IN OUT  NOCOPY NUMBER,
544    p_req_id         IN      NUMBER,
545    p_rule_id        IN      NUMBER,
546    p_slc_code       IN      NUMBER,
547    p_slc_type       IN      NUMBER,
548    p_part_code      IN      NUMBER,
549    p_data_table     IN      VARCHAR2,
550    p_table_alias    IN      VARCHAR2,
551    p_source_db_link IN      VARCHAR2 DEFAULT NULL,
552    p_condition      IN      VARCHAR2 DEFAULT NULL)
553 IS
554 
555    i_counter      NUMBER;
556    i_rownum       NUMBER;
557 
558    v_last_row     NUMBER;
559    v_count        NUMBER;
560    v_num_slices   NUMBER;
561    v_num_slices_calc NUMBER;
562    v_rows_slice   NUMBER;
563 
564    v_data_table   VARCHAR2(160);
565    v_tab_name     VARCHAR2(30);
566    v_tab_owner    VARCHAR2(30);
567    v_return_status   VARCHAR2(1);
568    v_msg_count       NUMBER;
569    v_msg_data     VARCHAR2(4000);
570 
571    v_col_name     VARCHAR2(80);
572    v_col_slc      VARCHAR2(240);
573    v_data_slice   VARCHAR2(4000);
574    v_col_type     VARCHAR2(30);
575    v_part_name    VARCHAR2(30);
576    v_slc_col      VARCHAR2(30);
577    v_slc_method   VARCHAR2(30);
578    v_condition    VARCHAR2(32767);
579 
580    v_block        VARCHAR2(80) := 'fem.plsql.fem_mp.bld_data_slices';
581 
582    v_sql_cmd      VARCHAR2(32766);
583 
584    TYPE number_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
585    t_num_val    number_type;
586 
587    TYPE display_code_type IS TABLE OF VARCHAR2(150) INDEX BY BINARY_INTEGER;
588    t_chr_val   display_code_type;
589 
590    TYPE c_ref_curs        IS REF CURSOR;
591    c_tab_part             c_ref_curs;
592 
593    CURSOR c_slc_col IS
594       SELECT column_name
595       FROM   fem_mp_data_slice_cols
596       WHERE  process_data_slices_cd = p_slc_code
597       ORDER BY process_data_slice_seq;
598 
599 /**************************************************************************
600                      Build Data Slices: Execution Block
601  **************************************************************************/
602 BEGIN
603 
604 FEM_ENGINES_PKG.TECH_MESSAGE
605  (p_severity => c_log_level_3,
606   p_module => v_block||'.Begin{550}',
607   p_msg_text => 'Begin FEM_MP.Build_Data_Slices');
608 FEM_ENGINES_PKG.TECH_MESSAGE
609  (p_severity => c_log_level_2,
610   p_module => v_block||'.p_req_id{552}',
611   p_msg_text => p_req_id);
612 FEM_ENGINES_PKG.TECH_MESSAGE
613  (p_severity => c_log_level_2,
614   p_module => v_block||'.p_slc_code{553}',
615   p_msg_text => p_slc_code);
616 FEM_ENGINES_PKG.TECH_MESSAGE
617  (p_severity => c_log_level_2,
618   p_module => v_block||'.p_slc_type{554}',
619   p_msg_text => p_slc_type);
620 FEM_ENGINES_PKG.TECH_MESSAGE
621  (p_severity => c_log_level_2,
622   p_module => v_block||'.p_part_code{555}',
623   p_msg_text => p_part_code);
624 FEM_ENGINES_PKG.TECH_MESSAGE
625  (p_severity => c_log_level_2,
626   p_module => v_block||'.p_data_table{556}',
627   p_msg_text => p_data_table);
628 FEM_ENGINES_PKG.TECH_MESSAGE
629  (p_severity => c_log_level_2,
630   p_module => v_block||'.p_table_alias{557}',
631   p_msg_text => p_table_alias);
632 FEM_ENGINES_PKG.TECH_MESSAGE
633  (p_severity => c_log_level_2,
634   p_module => v_block||'.p_condition{558}',
635   p_msg_text => p_condition);
636 
637 v_condition := NVL(REPLACE(p_condition,'WHERE',''),'1=1');
638 
639 FEM_ENGINES_PKG.TECH_MESSAGE
640  (p_severity => c_log_level_2,
641   p_module => v_block||'.v_condition{559}',
642   p_msg_text => v_condition);
643 
644 ---------------------------
645 -- Get Table Name and Owner
646 ---------------------------
647 
648 IF (p_source_db_link IS NULL)
649 THEN
650    v_data_table := p_data_table;
651 
652    SELECT table_name,table_owner
653    INTO v_tab_name,v_tab_owner
654    FROM user_synonyms
655    WHERE synonym_name = p_data_table;
656 ELSE
657    v_data_table := p_data_table||'@'||p_source_db_link;
658 
659    v_sql_cmd :=
660    'SELECT table_name,table_owner'||
661    ' FROM user_synonyms@'||p_source_db_link||
662    ' WHERE synonym_name = :b_data_table';
663 
664    EXECUTE IMMEDIATE v_sql_cmd
665    INTO v_tab_name,v_tab_owner
666    USING p_data_table;
667 
668 END IF;
669 
670 FEM_ENGINES_PKG.TECH_MESSAGE
671  (p_severity => c_log_level_2,
672   p_module => v_block||'.v_tab_name{556.1}',
673   p_msg_text => v_tab_name);
674 FEM_ENGINES_PKG.TECH_MESSAGE
678 FEM_ENGINES_PKG.TECH_MESSAGE
675  (p_severity => c_log_level_2,
676   p_module => v_block||'.v_tab_owner{556.2}',
677   p_msg_text => v_tab_owner);
679  (p_severity => c_log_level_2,
680   p_module => v_block||'.v_data_table{556.3}',
681   p_msg_text => v_data_table);
682 
683 ----------------------------------------------------
684 -- Remove data slices in case Job has multiple steps
685 ----------------------------------------------------
686 DELETE FROM FEM_MP_PROCESS_CTL_T
687 WHERE req_id = p_req_id;
688 
689 COMMIT;
690 
691 /**************************************************************************
692                         Determine slicing method
693              If slicing is disabled, then v_slc_col is set to NULL
694  **************************************************************************/
695 BEGIN
696    SELECT UPPER(column_name)
697    INTO   v_slc_col
698    FROM   fem_mp_data_slice_cols
699    WHERE  process_data_slices_cd = p_slc_code
700    AND    process_data_slice_seq = 1;
701 EXCEPTION
702    WHEN no_data_found THEN
703       v_slc_col := '';
704       v_col_type := 'VARCHAR2';
705 END;
706 
707 FEM_ENGINES_PKG.TECH_MESSAGE
708  (p_severity => c_log_level_2,
709   p_module => v_block||'.v_slc_col{560}',
710   p_msg_text => v_slc_col);
711 
712 IF (v_slc_col IS NOT NULL)
713 THEN
714    IF (v_slc_col = 'ROWID') AND (p_slc_type <> 2)
715    THEN
716       RAISE e_bad_mp_settings;
717    END IF;
718 
719    IF (p_slc_type = 1)
720    THEN
721       v_col_type := 'VARCHAR2';
722    END IF;
723 
724    IF (p_slc_type = 2)
725    THEN
726       BEGIN
727          SELECT  num_of_slices,rows_per_slice
728          INTO    v_num_slices, v_rows_slice
729          FROM    fem_mp_data_slices
730          WHERE   process_data_slices_cd = p_slc_code;
731       EXCEPTION
732          WHEN no_data_found THEN
733             RAISE e_bad_mp_settings;
734       END;
735 
736       IF (v_num_slices IS NOT NULL)
737       THEN
738          v_rows_slice := null;
739       END IF;
740 
741       IF (v_num_slices > 0)
742           OR (v_rows_slice > 0)
743       THEN
744          IF (v_slc_col = 'ROWID')
745          THEN
746             v_col_type := 'ROWID';
747          ELSE
748             IF (p_source_db_link IS NULL)
749             THEN
750                SELECT data_type
751                INTO v_col_type
752                FROM all_tab_columns
753                WHERE owner = v_tab_owner
754                AND table_name = v_tab_name
755                AND column_name = v_slc_col;
756             ELSE
757             -- Shouldn't this be all_tab_columns?
758                v_sql_cmd :=
759                'SELECT data_type'||
760                ' FROM dba_tab_columns@'||p_source_db_link||
761                ' WHERE owner = :b_tab_owner'||
762                ' AND table_name = :b_tab_name'||
763                ' AND column_name = :b_slc_col';
764 
765                EXECUTE IMMEDIATE v_sql_cmd
766                INTO v_col_type
767                USING v_tab_owner,v_tab_name,v_slc_col;
768             END IF;
769 
770          END IF;
771       ELSE
772          RAISE e_bad_mp_settings;
773       END IF;
774    END IF;
775 
776    IF (p_slc_type = 3)
777    THEN
778       v_slc_col := null;
779       v_num_slices := null;
780       v_rows_slice := null;
781    END IF;
782 END IF;
783 
784 FEM_ENGINES_PKG.TECH_MESSAGE(
785  p_severity => c_log_level_2,
786  p_module => v_block||'.v_num_slices{561}',
787  p_msg_text => v_num_slices);
788 FEM_ENGINES_PKG.TECH_MESSAGE(
789  p_severity => c_log_level_2,
790  p_module => v_block||'.v_rows_slice{562}',
791  p_msg_text => v_rows_slice);
792 FEM_ENGINES_PKG.TECH_MESSAGE
793  (p_severity => c_log_level_2,
794   p_module => v_block||'.v_slc_col{563}',
795   p_msg_text => v_slc_col);
796 FEM_ENGINES_PKG.TECH_MESSAGE
797  (p_severity => c_log_level_2,
798   p_module => v_block||'.v_col_type{564}',
799   p_msg_text => v_col_type);
800 
801 /**************************************************************************
802    Determining data slicing method, and prepare data slice and data slice
803    predicate values.
804  **************************************************************************/
805 IF (v_slc_col IS NOT NULL) AND (p_slc_type = 1)
806 THEN
807 -- ------------------------------------------------------------------------
808 -- Prepare for slicing on distinct values
809 -- ------------------------------------------------------------------------
810    v_slc_method := 'DISTINCT';
811 
812    FOR r_slc_col IN c_slc_col LOOP
813 
814       v_col_name := UPPER(r_slc_col.column_name);
815 
816       IF (p_table_alias IS NULL)
817       THEN
818          v_col_slc := v_col_name || ' = :b_val_' || c_slc_col%ROWCOUNT;
819       ELSE
820          v_col_slc := p_table_alias || '.' || v_col_name ||
821                       ' = :b_val_' || c_slc_col%ROWCOUNT;
822       END IF;
823 
824       IF (c_slc_col%ROWCOUNT = 1)
825       THEN
826          x_slc_pred := v_col_slc;
830       ELSE
827       ELSIF (c_slc_col%ROWCOUNT < 5)
828       THEN
829          x_slc_pred := x_slc_pred||' AND '||v_col_slc;
831          EXIT;
832       END IF;
833 
834       IF (v_data_slice IS NULL)
835       THEN
836         v_data_slice := v_col_name;
837       ELSE
838         v_data_slice := v_data_slice||'||''{#}''||'||v_col_name;
839       END IF;
840 
841    END LOOP;
842 
843 ELSIF (v_slc_col IS NOT NULL) AND (p_slc_type = 2)
844 THEN
845 -- ------------------------------------------------------------------------
846 -- Prepare for slicing on value ranges
847 -- ------------------------------------------------------------------------
848    IF (p_table_alias IS NULL)
849    THEN
850       x_slc_pred := v_slc_col||' BETWEEN :b_val_1 AND :b_val_2 ';
851    ELSE
852       x_slc_pred := p_table_alias||'.'||v_slc_col||
853                     ' BETWEEN :b_val_1 AND :b_val_2 ';
854    END IF;
855 
856    IF (v_slc_col = 'ROWID')
857          OR (    (v_slc_col = 'CREATION_ROW_SEQUENCE')
858              AND (p_data_table = 'FEM_BALANCES'))
859    THEN
860    -- -----------------------------------------------------------------
861    -- These columns are guaranteed to be unique within the input set
862    -- so the data slices can be populated directly as an INSERT/SELECT
863    -- statement.
864    -- -----------------------------------------------------------------
865       v_slc_method := 'RANGE_UNIQUE';
866    ELSE
867    -- -----------------------------------------------------------------
868    -- For range slicing on all other columns, the NTILE function may
869    -- divide the same column value into two different slices, so
870    -- the range endpoints have to be adjusted.
871    -- -----------------------------------------------------------------
872       v_slc_method := 'RANGE_NON_UNIQUE';
873    END IF;
874 
875 ELSIF (v_slc_col IS NULL)
876 THEN
877 -- --------------------------------------------------------------------
878 -- Prepare for one single DUMMY data slice (1=1)
879 -- --------------------------------------------------------------------
880    v_slc_method := 'NO_SLICING';
881    x_slc_pred := '1 = :b_val_1';
882    v_data_slice := 1;
883 
884 END IF;
885 
886 FEM_ENGINES_PKG.TECH_MESSAGE
887  (p_severity => c_log_level_2,
888   p_module => v_block||'.v_slc_method{565}',
889   p_msg_text => v_slc_method);
890 FEM_ENGINES_PKG.TECH_MESSAGE
891  (p_severity => c_log_level_2,
892   p_module => v_block||'.v_data_slc{566}',
893   p_msg_text => v_data_slice);
894 
895 /**************************************************************************
896                         Loop through table partitions
897    The data on each partition is sliced per the specified slicing method
898    If the table is not partitioned, or partition slicing is disabled,
899    then the loop exits after just one pass
900  **************************************************************************/
901 
902 i_rownum := 0;
903 
904 IF (p_source_db_link IS NULL)
905 THEN
906    v_sql_cmd :=
907    'SELECT partition_name'||
908    ' FROM  all_tab_partitions'||
909    ' WHERE table_owner = '''||v_tab_owner||''''||
910    ' AND   table_name = '''||v_tab_name||''''||
911    ' ORDER BY partition_position';
912 ELSE
913    v_sql_cmd :=
914    'SELECT partition_name'||
915    ' FROM  all_tab_partitions@'||p_source_db_link||
916    ' WHERE table_owner = '''||v_tab_owner||''''||
917    ' AND   table_name = '''||v_tab_name||''''||
918    ' ORDER BY partition_position';
919 END IF;
920 
921 OPEN c_tab_part FOR v_sql_cmd;
922 LOOP
923    FETCH c_tab_part INTO v_part_name;
924    IF (c_tab_part%NOTFOUND)
925    THEN
926       CASE c_tab_part%ROWCOUNT
927          WHEN 0 THEN x_part_code := 0;
928          ELSE EXIT;
929       END CASE;
930    ELSE
931       CASE p_part_code
932          WHEN 0 THEN v_part_name := '';
933          ELSE NULL;
934       END CASE;
935    END IF;
936 
937    FEM_ENGINES_PKG.TECH_MESSAGE
938     (p_severity => c_log_level_2,
939      p_module => v_block||'.v_part_name{580}',
940      p_msg_text => v_part_name);
941 
942    IF v_slc_method = 'DISTINCT'
943    THEN
944 
945       Put_Distinct_Data_Slices(
946        p_rownum => i_rownum,
947        p_req_id => p_req_id,
948        p_rule_id => p_rule_id,
949        p_data_table => v_data_table,
950        p_condition => v_condition,
951        p_data_slc => v_data_slice,
952        p_part_name => v_part_name);
953 
954    ELSIF (v_slc_method = 'RANGE_UNIQUE'
955           OR v_slc_method = 'RANGE_NON_UNIQUE')
956    THEN
957 
958       v_num_slices_calc := v_num_slices;
959 
960       IF ((v_num_slices IS NULL or v_num_slices < 1) AND v_rows_slice > 0)
961       THEN
962          ----------------------------------------------
963          -- Convert rows per slice to number of slices
964          ----------------------------------------------
965          IF (v_part_name IS NULL)
966          THEN
967             EXECUTE IMMEDIATE
968                'SELECT COUNT(*)'||
969                ' FROM '||v_data_table||
970                ' WHERE '||v_condition
971             INTO v_count;
972          ELSE
973             EXECUTE IMMEDIATE
977             INTO v_count;
974                'SELECT COUNT(*)'||
975                ' FROM '||v_data_table||' PARTITION('||v_part_name||')'||
976                ' WHERE '||v_condition
978          END IF;
979 
980          v_num_slices_calc := CEIL(v_count/v_rows_slice);
981 
982          FEM_ENGINES_PKG.TECH_MESSAGE
983           (p_severity => c_log_level_2,
984            p_module => v_block||'.v_num_slices_calc{570}',
985            p_msg_text => v_num_slices_calc);
986 
987       END IF;
988 
989       IF v_num_slices_calc > 0
990       THEN
991 
992          IF (v_slc_method = 'RANGE_UNIQUE')
993          THEN
994 
995             Put_Range_Slices_Unique (
996                p_rownum     => i_rownum,
997                p_req_id     => p_req_id,
998                p_rule_id    => p_rule_id,
999                p_num_slices => v_num_slices_calc,
1000                p_data_table => v_data_table,
1001                p_slc_col    => v_slc_col,
1002                p_condition  => v_condition,
1003                p_part_name  => v_part_name);
1004 
1005          ELSE
1006 
1007             Put_Range_Slices_Non_Unique (
1008                p_rownum     => i_rownum,
1009                p_req_id     => p_req_id,
1010                p_rule_id    => p_rule_id,
1011                p_num_slices => v_num_slices_calc,
1012                p_data_table => v_data_table,
1013                p_slc_col    => v_slc_col,
1014                p_col_type   => v_col_type,
1015                p_condition  => v_condition,
1016                p_part_name  => v_part_name);
1017 
1018          END IF;
1019 
1020       END IF;
1021 
1022    ELSIF (v_slc_col IS NULL)
1023    THEN
1024    -- --------------------------------------------------------------------
1025    -- Build DUMMY data slice (1=1)
1026    -- --------------------------------------------------------------------
1027       IF v_part_name IS NOT NULL
1028       THEN
1029       -- Only post a data slice for this partition if it has any data
1030       -- that matches the condition
1031          EXECUTE IMMEDIATE
1032             'SELECT COUNT(*)'||
1033             ' FROM '||v_data_table||' PARTITION('||v_part_name||')'||
1034             ' WHERE '||v_condition||
1035               ' AND ROWNUM = 1'
1036          INTO v_count;
1037       ELSE
1038       -- Partitioning is off; must post one dummy data slice for the table.
1039          v_count := 1;
1040       END IF;
1041 
1042       FEM_ENGINES_PKG.TECH_MESSAGE
1043        (p_severity => c_log_level_2,
1044         p_module => v_block||'.v_count{570.1}',
1045         p_msg_text => v_count);
1046 
1047       IF v_count = 1 THEN
1048 
1049          Put_Data_Slice(
1050             p_rownum    => i_rownum,
1051             p_req_id    => p_req_id,
1052             p_rule_id   => p_rule_id,
1053             p_data_slc  => v_data_slice,
1054             p_part_name => v_part_name);
1055 
1056       END IF;
1057 
1058    END IF;
1059 
1060    -----------------------------------------------------------------
1061    -- If table is not partitioned, or partition slicing is disabled,
1062    -- then exit the partition loop after just one pass
1063    -----------------------------------------------------------------
1064    IF (v_part_name IS NULL)
1065    THEN
1066       EXIT;
1067    END IF;
1068 
1069 END LOOP;
1070 CLOSE c_tab_part;
1071 
1072 FEM_ENGINES_PKG.TECH_MESSAGE
1073  (p_severity => c_log_level_3,
1074   p_module => v_block||'.End{579}',
1075   p_msg_text => 'End FEM_MP.Build_Data_Slices');
1076 
1077 END Build_Data_Slices;
1078 
1079 
1080 /**************************************************************************
1081  **************************************************************************
1082 
1083                            =================
1084                                  Master
1085                            =================
1086 
1087  **************************************************************************
1088  **************************************************************************/
1089 
1090 PROCEDURE Master (
1091 x_prg_stat        OUT  NOCOPY VARCHAR2,
1092 x_exception_code  OUT  NOCOPY VARCHAR2,
1093 p_rule_id         IN   NUMBER,
1094 p_eng_step        IN   VARCHAR2,
1095 p_data_table      IN   VARCHAR2,
1096 p_source_db_link  IN   VARCHAR2 DEFAULT NULL,
1097 p_eng_sql         IN   VARCHAR2 DEFAULT NULL,
1098 p_table_alias     IN   VARCHAR2 DEFAULT NULL,
1099 p_run_name        IN   VARCHAR2 DEFAULT NULL,
1100 p_eng_prg         IN   VARCHAR2 DEFAULT NULL,
1101 p_condition       IN   VARCHAR2 DEFAULT NULL,
1102 p_failed_req_id   IN   NUMBER   DEFAULT NULL,
1103 p_reuse_slices    IN   VARCHAR2 DEFAULT 'N',
1104 p_arg1            IN   VARCHAR2 DEFAULT NULL,
1105 p_arg2            IN   VARCHAR2 DEFAULT NULL,
1106 p_arg3            IN   VARCHAR2 DEFAULT NULL,
1107 p_arg4            IN   VARCHAR2 DEFAULT NULL,
1108 p_arg5            IN   VARCHAR2 DEFAULT NULL,
1109 p_arg6            IN   VARCHAR2 DEFAULT NULL,
1110 p_arg7            IN   VARCHAR2 DEFAULT NULL,
1111 p_arg8            IN   VARCHAR2 DEFAULT NULL,
1112 p_arg9            IN   VARCHAR2 DEFAULT NULL,
1113 p_arg10           IN   VARCHAR2 DEFAULT NULL,
1114 p_arg11           IN   VARCHAR2 DEFAULT NULL,
1115 p_arg12           IN   VARCHAR2 DEFAULT NULL,
1116 p_arg13           IN   VARCHAR2 DEFAULT NULL,
1120 p_arg17           IN   VARCHAR2 DEFAULT NULL,
1117 p_arg14           IN   VARCHAR2 DEFAULT NULL,
1118 p_arg15           IN   VARCHAR2 DEFAULT NULL,
1119 p_arg16           IN   VARCHAR2 DEFAULT NULL,
1121 p_arg18           IN   VARCHAR2 DEFAULT NULL,
1122 p_arg19           IN   VARCHAR2 DEFAULT NULL,
1123 p_arg20           IN   VARCHAR2 DEFAULT NULL,
1124 p_arg21           IN   VARCHAR2 DEFAULT NULL,
1125 p_arg22           IN   VARCHAR2 DEFAULT NULL,
1126 p_arg23           IN   VARCHAR2 DEFAULT NULL,
1127 p_arg24           IN   VARCHAR2 DEFAULT NULL,
1128 p_arg25           IN   VARCHAR2 DEFAULT NULL,
1129 p_arg26           IN   VARCHAR2 DEFAULT NULL,
1130 p_arg27           IN   VARCHAR2 DEFAULT NULL,
1131 p_arg28           IN   VARCHAR2 DEFAULT NULL,
1132 p_arg29           IN   VARCHAR2 DEFAULT NULL,
1133 p_arg30           IN   VARCHAR2 DEFAULT NULL,
1134 p_arg31           IN   VARCHAR2 DEFAULT NULL,
1135 p_arg32           IN   VARCHAR2 DEFAULT NULL,
1136 p_arg33           IN   VARCHAR2 DEFAULT NULL,
1137 p_arg34           IN   VARCHAR2 DEFAULT NULL,
1138 p_arg35           IN   VARCHAR2 DEFAULT NULL,
1139 p_arg36           IN   VARCHAR2 DEFAULT NULL,
1140 p_arg37           IN   VARCHAR2 DEFAULT NULL,
1141 p_arg38           IN   VARCHAR2 DEFAULT NULL,
1142 p_arg39           IN   VARCHAR2 DEFAULT NULL,
1143 p_arg40           IN   VARCHAR2 DEFAULT NULL
1144 )
1145 IS
1146 
1147 f_req_wait          BOOLEAN;
1148 f_set_status        BOOLEAN;
1149 
1150 v_args_count        NUMBER;
1151 v_fetch_limit       NUMBER;
1152 v_kill_signal       NUMBER;
1153 v_mp_method         NUMBER;
1154 v_num_procs         NUMBER;
1155 v_num_slices        NUMBER;
1156 v_part_code         NUMBER;
1157 v_prms_count        NUMBER;
1158 v_slc_code          NUMBER;
1159 v_slc_id            NUMBER;
1160 v_slc_type          NUMBER;
1161 
1162 v_dev_phase         VARCHAR2(80);
1163 v_dev_status        VARCHAR2(80);
1164 v_prg_stat          VARCHAR2(160);
1165 v_eng_prg           VARCHAR2(80);
1166 v_eng_step          VARCHAR2(30);
1167 v_max_slice         VARCHAR2(4000);
1168 v_msg_text          VARCHAR2(32767);
1169 v_obj_type          VARCHAR2(30);
1170 v_prg_msg           VARCHAR2(2000);
1171 v_req_message       VARCHAR2(4000);
1172 v_req_phase         VARCHAR2(4000);
1173 v_req_status        VARCHAR2(4000);
1174 v_req_name          VARCHAR2(80);
1175 v_slc_pred          VARCHAR2(32767);
1176 v_sub_req_id        NUMBER;
1177 
1178 v_stack             VARCHAR2(32767);
1179 v_trace             VARCHAR2(255);
1180 
1181 v_req_id            NUMBER := fnd_global.conc_request_id;
1182 
1183 v_block             VARCHAR2(80) := 'fem.plsql.fem_mp.master';
1184 
1185 v_sql_cmd           VARCHAR2(32766);
1186 
1187 CURSOR c_sub_req_id IS
1188    SELECT request_id
1189    FROM   fnd_concurrent_requests R,
1190           fnd_concurrent_programs P
1191    WHERE  parent_request_id = v_req_id
1192    AND    R.concurrent_program_id = P.concurrent_program_id
1193    AND    P.concurrent_program_name = c_mp_sub_prg
1194    AND    P.application_id = c_mp_app_id
1195    ORDER BY request_id;
1196 
1197 e_no_rule_id        EXCEPTION;
1198 e_no_mp_method      EXCEPTION;
1199 e_no_data_slices    EXCEPTION;
1200 e_no_subreq         EXCEPTION;
1201 
1202 /**************************************************************************
1203 
1204                            Master: Execution Block
1205 
1206  **************************************************************************/
1207 
1208 BEGIN
1209 
1210 DBMS_SESSION.SET_SQL_TRACE (sql_trace => FALSE);
1211 v_trace := 'FEM_MP.Master:'||v_req_id;
1212 
1213 FEM_ENGINES_PKG.TECH_MESSAGE(
1214  p_severity => c_log_level_3,
1215  p_module => v_block||'.Begin{500}',
1216  p_msg_text => 'Begin FEM_MP.MASTER');
1217 FEM_ENGINES_PKG.TECH_MESSAGE(
1218  p_severity => c_log_level_2,
1219  p_module => v_block||'.v_req_id{501}',
1220  p_msg_text => v_req_id);
1221 FEM_ENGINES_PKG.TECH_MESSAGE(
1222  p_severity => c_log_level_2,
1223  p_module => v_block||'.p_rule_id{502}',
1224  p_msg_text => p_rule_id);
1225 FEM_ENGINES_PKG.TECH_MESSAGE(
1226  p_severity => c_log_level_2,
1227  p_module => v_block||'.p_eng_step{503}',
1228  p_msg_text => p_eng_step);
1229 FEM_ENGINES_PKG.TECH_MESSAGE(
1230  p_severity => c_log_level_1,
1231  p_module => v_block||'.p_eng_sql{504}',
1232  p_msg_text => p_eng_sql);
1233 FEM_ENGINES_PKG.TECH_MESSAGE(
1234  p_severity => c_log_level_2,
1235  p_module => v_block||'.p_data_table{505}',
1236  p_msg_text => p_data_table);
1237 FEM_ENGINES_PKG.TECH_MESSAGE(
1238  p_severity => c_log_level_2,
1239  p_module => v_block||'.p_table_alias{506}',
1240  p_msg_text => p_table_alias);
1241 FEM_ENGINES_PKG.TECH_MESSAGE(
1242  p_severity => c_log_level_2,
1243  p_module => v_block||'.p_run_name{507}',
1244  p_msg_text => p_run_name);
1245 FEM_ENGINES_PKG.TECH_MESSAGE(
1246  p_severity => c_log_level_2,
1247  p_module => v_block||'.p_eng_prg{508}',
1248  p_msg_text => p_eng_prg);
1249 FEM_ENGINES_PKG.TECH_MESSAGE(
1250  p_severity => c_log_level_2,
1251  p_module => v_block||'.p_condition{509}',
1252  p_msg_text => p_condition);
1253 FEM_ENGINES_PKG.TECH_MESSAGE(
1254  p_severity => c_log_level_2,
1255  p_module => v_block||'.p_failed_req_id{510}',
1256  p_msg_text => p_failed_req_id);
1257 
1258 IF (p_run_name IS NOT NULL)
1259 THEN
1260    v_req_name := v_req_id||' ('||p_run_name||')';
1264 
1261 ELSE
1262    v_req_name := v_req_id;
1263 END IF;
1265 ------------------------
1266 -- Check for Kill signal (this feature is not implemented yet)
1267 ------------------------
1268 v_kill_signal := 0;
1269 
1270 CASE v_kill_signal
1271    WHEN 1 THEN RAISE e_soft_kill;
1272    ELSE NULL;
1273 END CASE;
1274 
1275 /**************************************************************************
1276 
1277                           Get Processing Method
1278 
1279  **************************************************************************/
1280 BEGIN
1281    SELECT object_type_code
1282    INTO v_obj_type
1283    FROM fem_object_catalog_b
1284    WHERE object_id = p_rule_id;
1285 EXCEPTION
1286    WHEN no_data_found THEN
1287       RAISE e_no_rule_id;
1288 END;
1289 
1290 BEGIN
1291    SELECT step_name,
1292           TO_NUMBER(mp_method_code)
1293    INTO   v_eng_step,
1294           v_mp_method
1295    FROM   fem_mp_obj_step_methods
1296    WHERE  object_type_code = v_obj_type
1297    AND    step_name = p_eng_step;
1298 EXCEPTION
1299    WHEN no_data_found THEN
1300    BEGIN
1301       SELECT 'ALL',
1302              TO_NUMBER(mp_method_code)
1303       INTO   v_eng_step,
1304              v_mp_method
1305       FROM   fem_mp_obj_step_methods
1306       WHERE  object_type_code = v_obj_type
1307       AND    step_name = 'ALL';
1308    EXCEPTION
1309       WHEN no_data_found THEN
1310          RAISE e_no_mp_method;
1311    END;
1312 END;
1313 
1314 CASE v_mp_method
1315    WHEN 1 THEN v_eng_prg := '';
1316    ELSE v_eng_prg := p_eng_prg;
1317 END CASE;
1318 
1319 /**************************************************************************
1320 
1321                           Get Processing Settings
1322 
1323  **************************************************************************/
1324 BEGIN
1325    SELECT step_name,
1326           process_data_slices_cd,
1327           TO_NUMBER(data_slice_type_code),
1328           process_partition_cd,
1329           num_of_processes,
1330           array_size_rows
1331    INTO   v_eng_step,
1332           v_slc_code,
1333           v_slc_type,
1334           v_part_code,
1335           v_num_procs,
1336           v_fetch_limit
1337    FROM   fem_mp_process_options
1338    WHERE  object_type_code = v_obj_type
1339    AND    step_name = p_eng_step
1340    AND    object_id = p_rule_id;
1341 EXCEPTION
1342    WHEN no_data_found THEN
1343    BEGIN
1344       SELECT 'ALL',
1345              process_data_slices_cd,
1346              TO_NUMBER(data_slice_type_code),
1347              process_partition_cd,
1348              num_of_processes,
1349              array_size_rows
1350       INTO   v_eng_step,
1351              v_slc_code,
1352              v_slc_type,
1353              v_part_code,
1354              v_num_procs,
1355              v_fetch_limit
1356       FROM   fem_mp_process_options
1357       WHERE  object_type_code = v_obj_type
1358       AND    step_name = 'ALL'
1359       AND    object_id = p_rule_id;
1360    EXCEPTION
1361       WHEN no_data_found THEN
1362       BEGIN
1363          SELECT step_name,
1364                 process_data_slices_cd,
1365                 TO_NUMBER(data_slice_type_code),
1366                 process_partition_cd,
1367                 num_of_processes,
1368                 array_size_rows
1369          INTO   v_eng_step,
1370                 v_slc_code,
1371                 v_slc_type,
1372                 v_part_code,
1373                 v_num_procs,
1374                 v_fetch_limit
1375          FROM   fem_mp_process_options
1376          WHERE  object_type_code = v_obj_type
1377          AND    step_name = p_eng_step
1378          AND    object_id IS NULL;
1379       EXCEPTION
1380          WHEN no_data_found THEN
1381          BEGIN
1382             SELECT 'ALL',
1383                    process_data_slices_cd,
1384                    TO_NUMBER(data_slice_type_code),
1385                    process_partition_cd,
1386                    num_of_processes,
1387                    array_size_rows
1388             INTO   v_eng_step,
1389                    v_slc_code,
1390                    v_slc_type,
1391                    v_part_code,
1392                    v_num_procs,
1393                    v_fetch_limit
1394             FROM   fem_mp_process_options P
1395             WHERE  object_type_code = v_obj_type
1396             AND    step_name = 'ALL'
1397             AND    object_id IS NULL;
1398          EXCEPTION
1399             WHEN no_data_found THEN
1400                FEM_ENGINES_PKG.PUT_MESSAGE
1401                 (p_app_name => 'FEM',
1402                  p_msg_name => 'FEM_MP_NO_SETTINGS_WARN',
1403                  p_token1 => 'REQUEST',
1404                  p_value1 => v_req_name);
1405                v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1406 
1407                FEM_ENGINES_PKG.TECH_MESSAGE
1408                 (p_severity => c_log_level_5,
1409                  p_module => v_block||'.get_mp_settings{542}',
1410                  p_msg_text => v_prg_msg);
1411                FEM_ENGINES_PKG.USER_MESSAGE(
1412                 p_msg_text => v_prg_msg);
1413 
1414 --                f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS(
1418    END;
1415 --                                'WARNING',null);
1416          END;
1417       END;
1419 END;
1420 
1421 IF (v_slc_type IS NULL)
1422 THEN
1423    v_slc_type := 3;
1424 END IF;
1425 
1426 IF (v_part_code IS NULL)
1427 THEN
1428    v_part_code := 0;
1429 END IF;
1430 
1431 IF (v_num_procs IS NULL)
1432 THEN
1433    v_num_procs := 0;
1434 END IF;
1435 
1436 FEM_ENGINES_PKG.TECH_MESSAGE(
1437  p_severity => c_log_level_2,
1438  p_module => v_block||'.v_eng_prg{511}',
1439  p_msg_text => v_eng_prg);
1440 FEM_ENGINES_PKG.TECH_MESSAGE(
1441  p_severity => c_log_level_2,
1442  p_module => v_block||'.v_obj_type{512}',
1443  p_msg_text => v_obj_type);
1444 FEM_ENGINES_PKG.TECH_MESSAGE(
1445  p_severity => c_log_level_2,
1446  p_module => v_block||'.v_eng_step{513}',
1447  p_msg_text => v_eng_step);
1448 CASE v_mp_method
1449    WHEN 0 THEN v_msg_text := v_mp_method||' (Predicate push)';
1450    WHEN 1 THEN v_msg_text := v_mp_method||' (Pull)';
1451    WHEN 2 THEN v_msg_text := v_mp_method||' (Bind values push)';
1452    ELSE v_msg_text := v_mp_method||' (Invalid MP Method Code)';
1453 END CASE;
1454 FEM_ENGINES_PKG.TECH_MESSAGE(
1455   p_severity => c_log_level_2,
1456   p_module => v_block||'.v_mp_method{514}',
1457   p_msg_text => v_msg_text);
1458 FEM_ENGINES_PKG.TECH_MESSAGE(
1459   p_severity => c_log_level_2,
1460   p_module => v_block||'.v_slc_code{515}',
1461   p_msg_text => v_slc_code);
1462 CASE v_slc_type
1463    WHEN 0 THEN v_msg_text := v_slc_type||' (Engine specific)';
1464    WHEN 1 THEN v_msg_text := v_slc_type||' (Distinct values)';
1465    WHEN 2 THEN v_msg_text := v_slc_type||' (Value ranges)';
1466    WHEN 3 THEN v_msg_text := v_slc_type||' (No slicing)';
1467    ELSE v_msg_text := v_slc_type||' (Invalid Data Slice Type Code)';
1468 END CASE;
1469 FEM_ENGINES_PKG.TECH_MESSAGE(
1470   p_severity => c_log_level_2,
1471   p_module => v_block||'.v_slc_type{516}',
1472   p_msg_text => v_msg_text);
1473 CASE v_part_code
1474    WHEN 0 THEN v_msg_text := v_part_code||' (No partitioning)';
1475    WHEN 1 THEN v_msg_text := v_part_code||' (Shared partitioning)';
1476    WHEN 2 THEN v_msg_text := v_part_code||' (Dedicated partitioning)';
1477    ELSE v_msg_text := v_part_code||' (Invalid Process Partition Code)';
1478 END CASE;
1479 FEM_ENGINES_PKG.TECH_MESSAGE(
1480   p_severity => c_log_level_2,
1481   p_module => v_block||'.v_part_code{517}',
1482   p_msg_text => v_msg_text);
1483 FEM_ENGINES_PKG.TECH_MESSAGE(
1484   p_severity => c_log_level_2,
1485   p_module => v_block||'.v_num_procs{518}',
1486   p_msg_text => v_num_procs);
1487 FEM_ENGINES_PKG.TECH_MESSAGE(
1488   p_severity => c_log_level_2,
1489   p_module => v_block||'.v_fetch_limit{519}',
1490   p_msg_text => v_fetch_limit);
1491 
1492 IF (p_reuse_slices = 'N')
1493 THEN
1494    ----------------------------------
1495    -- Housekeep the MP process tables
1496    ----------------------------------
1497    DELETE FROM fem_mp_process_ctl_t T
1498    WHERE rule_id = p_rule_id
1499      AND (req_id IN (SELECT request_id
1500                      FROM fnd_concurrent_requests
1501                      WHERE phase_code = 'C')
1502           OR NOT EXISTS (SELECT 1 FROM fnd_concurrent_requests
1503                          WHERE request_id = T.req_id));
1504 
1505    DELETE FROM fem_mp_process_args_t T
1506    WHERE rule_id = p_rule_id
1507      AND (req_id IN (SELECT request_id
1508                      FROM fnd_concurrent_requests
1509                      WHERE phase_code = 'C')
1510           OR NOT EXISTS (SELECT 1 FROM fnd_concurrent_requests
1511                          WHERE request_id = T.req_id));
1512    COMMIT;
1513 
1514    IF (v_slc_type > 0)
1515    THEN
1516      /***********************************************************************
1517 
1518                             Build Data Slices
1519 
1520       ***********************************************************************/
1521       DELETE FROM fem_mp_process_ctl_t
1522       WHERE req_id = v_req_id;
1523 
1524       COMMIT;
1525 
1526       --------------------------------------
1527       -- Call procedure to Build Data Slices
1528       --------------------------------------
1529       Build_Data_Slices(
1530        x_slc_pred => v_slc_pred,
1531        x_part_code => v_part_code,
1532        p_req_id => v_req_id,
1533        p_rule_id => p_rule_id,
1534        p_slc_code => v_slc_code,
1535        p_slc_type => v_slc_type,
1536        p_part_code => v_part_code,
1537        p_data_table => p_data_table,
1538        p_table_alias => p_table_alias,
1539        p_source_db_link => p_source_db_link,
1540        p_condition => p_condition);
1541    END IF;
1542 END IF;
1543 
1544 FEM_ENGINES_PKG.TECH_MESSAGE(
1545   p_severity => c_log_level_2,
1546   p_module => v_block||'.v_slc_pred{520.1}',
1547   p_msg_text => v_slc_pred);
1548 FEM_ENGINES_PKG.TECH_MESSAGE(
1549   p_severity => c_log_level_2,
1550   p_module => v_block||'.v_part_code{520.2}',
1551   p_msg_text => v_part_code);
1552 
1553 IF (p_reuse_slices = 'N')
1554 THEN
1555   /***********************************************************************
1556 
1557                    Verify existence of data slices
1558 
1559    ***********************************************************************/
1560    SELECT MAX(REPLACE(data_slice,'{#}',''))
1564 
1561    INTO v_max_slice
1562    FROM fem_mp_process_ctl_t
1563    WHERE req_id = v_req_id;
1565 
1566    IF (v_max_slice IS NOT NULL)
1567    THEN
1568       SELECT COUNT(*)
1569       INTO v_num_slices
1570       FROM fem_mp_process_ctl_t
1571       WHERE req_id = v_req_id;
1572    ELSE
1573       RAISE e_no_data_slices;
1574    END IF;
1575 
1576    FEM_ENGINES_PKG.TECH_MESSAGE(
1577     p_severity => c_log_level_2,
1578     p_module => v_block||'.v_num_slices{521}',
1579     p_msg_text => v_num_slices);
1580 
1581    IF (v_num_procs = 0)
1582    THEN
1583       v_num_procs := v_num_slices;
1584    END IF;
1585 
1586    IF (v_num_procs > v_num_slices)
1587    THEN
1588       v_num_procs := v_num_slices;
1589    END IF;
1590 
1591    IF (v_num_procs > c_max_procs)
1592    THEN
1593       v_num_procs := c_max_procs;
1594    END IF;
1595 
1596    FEM_ENGINES_PKG.TECH_MESSAGE(
1597     p_severity => c_log_level_2,
1598     p_module => v_block||'.v_num_procs{522}',
1599     p_msg_text => v_num_procs);
1600    FEM_ENGINES_PKG.TECH_MESSAGE(
1601     p_severity => c_log_level_2,
1602     p_module => v_block||'.v_slc_pred{523}',
1603     p_msg_text => v_slc_pred);
1604 END IF;
1605 
1606 IF (p_reuse_slices = 'Y') AND (p_failed_req_id IS NOT NULL)
1607 THEN
1608   /***********************************************************************
1609 
1610                         Process Error Rerun
1611 
1612    ***********************************************************************/
1613    UPDATE fem_mp_process_ctl_t
1614    SET req_id = v_req_id,
1615        process_num = 0
1616    WHERE req_id = p_failed_req_id
1617      AND status IS NULL;
1618 
1619 END IF;
1620 
1621 IF (p_reuse_slices = 'R')
1622 THEN
1623   /***********************************************************************
1624 
1625                      Reset Data Slices to Initial State
1626 
1627    ***********************************************************************/
1628    UPDATE fem_mp_process_ctl_t
1629    SET process_num = 0,
1630        rows_processed = null,
1631        rows_loaded = null,
1632        rows_rejected = null,
1633        status = null,
1634        message = null
1635    WHERE req_id = v_req_id;
1636 
1637 END IF;
1638 
1639 IF (p_reuse_slices = 'Y') AND (p_failed_req_id IS NULL)
1640 THEN
1641   /***********************************************************************
1642 
1643                  Running as a Restart -- Reuse arguments
1644 
1645    ***********************************************************************/
1646    NULL;
1647 
1648 ELSE
1649   /***********************************************************************
1650 
1651              NOT running as a Restart -- Store new arguments
1652 
1653    ***********************************************************************/
1654    DELETE FROM fem_mp_process_args_t
1655    WHERE req_id = v_req_id;
1656 
1657    COMMIT;
1658 
1659    IF (v_mp_method = 1)
1660    THEN
1661       v_args_count := 0;
1662    ELSE
1663       Engine_Params(
1664          p_eng_prg => v_eng_prg,
1665          x_prms_in => v_prms_count);
1666 
1667       v_args_count := v_prms_count - 5;  -- There are 5 reqd IN parameters
1668 
1669       FEM_ENGINES_PKG.TECH_MESSAGE(
1670        p_severity => c_log_level_2,
1671        p_module => v_block||'.v_prms_count{524.1}',
1672        p_msg_text => v_prms_count);
1673    END IF;
1674 
1675    FEM_ENGINES_PKG.TECH_MESSAGE(
1676     p_severity => c_log_level_2,
1677     p_module => v_block||'.v_args_count{524.2}',
1678     p_msg_text => v_args_count);
1679 
1680    FEM_ENGINES_PKG.TECH_MESSAGE(
1681     p_severity => c_log_level_1,
1682     p_module => v_block||'.v_sql_cmd{525}',
1683     p_msg_text => 'Inserting into FEM_MP_PROCESS_ARGS_T...');
1684 
1685    INSERT INTO fem_mp_process_args_t
1686      (req_id,rule_id,eng_prg,eng_sql,slc_pred,arg_count,
1687       arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,
1688       arg9,arg10,arg11,arg12,arg13,arg14,arg15,arg16,
1689       arg17,arg18,arg19,arg20,arg21,arg22,arg23,arg24,
1690       arg25,arg26,arg27,arg28,arg29,arg30,arg31,arg32,
1691       arg33,arg34,arg35,arg36,arg37,arg38,arg39,arg40)
1692    VALUES
1693      (v_req_id,p_rule_id,v_eng_prg,
1694       p_eng_sql,v_slc_pred,v_args_count,
1695       p_arg1, p_arg2, p_arg3, p_arg4,
1696       p_arg5, p_arg6, p_arg7, p_arg8,
1697       p_arg9, p_arg10,p_arg11,p_arg12,
1698       p_arg13,p_arg14,p_arg15,p_arg16,
1699       p_arg17,p_arg18,p_arg19,p_arg20,
1700       p_arg21,p_arg22,p_arg23,p_arg24,
1701       p_arg25,p_arg26,p_arg27,p_arg28,
1702       p_arg29,p_arg30,p_arg31,p_arg32,
1703       p_arg33,p_arg34,p_arg35,p_arg36,
1704       p_arg37,p_arg38,p_arg39,p_arg40);
1705 
1706    COMMIT;
1707 END IF;
1708 
1709 -----------------------------------------------------
1710 -- RETURN;  -- Build data slices only - no processing
1711 -----------------------------------------------------
1712 
1713 /*************************************************************************
1714 
1715                      Submit Concurrent Subrequests
1716 
1717  *************************************************************************/
1718 
1722 
1719 FOR i_proc_num IN 1..v_num_procs LOOP
1720 
1721    v_sub_req_id :=  0;   -- Generate error for testing
1723    v_sub_req_id :=  FND_REQUEST.SUBMIT_REQUEST(
1724                      application => 'FEM',
1725                      program => c_mp_sub_prg,
1726                      sub_request => FALSE,
1727                      argument1 => v_req_id,
1728                      argument2 => v_mp_method,
1729                      argument3 => v_slc_type,
1730                      argument4 => i_proc_num,
1731                      argument5 => v_part_code,
1732                      argument6 => v_fetch_limit);
1733 
1734    FEM_ENGINES_PKG.TECH_MESSAGE(
1735     p_severity => c_log_level_2,
1736     p_module => v_block||'.sub_request{530}',
1737     p_msg_text => 'i_proc_num='||i_proc_num||':v_sub_req_id='||v_sub_req_id);
1738 
1739    IF (v_sub_req_id = 0)
1740    THEN
1741       EXIT;
1742    ELSE
1743       COMMIT;
1744    END IF;
1745 END LOOP;
1746 
1747 /*************************************************************************
1748 
1749                  Wait for Concurrent Subrequests to Complete
1750 
1751  *************************************************************************/
1752 
1753 x_prg_stat := 'COMPLETE:NORMAL';
1754 FOR r_sub_req_id IN c_sub_req_id
1755 LOOP
1756 
1757    v_sub_req_id := r_sub_req_id.request_id;
1758 
1759    FEM_ENGINES_PKG.TECH_MESSAGE(
1760     p_severity => c_log_level_2,
1761     p_module => v_block||'.v_sub_req_id{531.1}',
1762     p_msg_text => v_sub_req_id);
1763 
1764    LOOP
1765       f_req_wait := FND_CONCURRENT.WAIT_FOR_REQUEST
1766                     (v_sub_req_id,5,0,v_req_phase,v_req_status,
1767                      v_dev_phase,v_dev_status,v_req_message);
1768 
1769       FEM_ENGINES_PKG.TECH_MESSAGE(
1770        p_severity => c_log_level_2,
1771        p_module => v_block||'.req_status{531.2}',
1772        p_msg_text =>  'Sub-request='||v_sub_req_id||' : '||
1773                       'Phase='||v_dev_phase||' : '||
1774                       'Status='||v_dev_status);
1775 
1776       CASE v_dev_phase
1777          WHEN 'COMPLETE' THEN EXIT;
1778          WHEN 'INACTIVE' THEN EXIT;
1779          ELSE NULL;
1780       END CASE;
1781    END LOOP;
1782 
1783    v_prg_stat := v_dev_phase||':'||v_dev_status;
1784 
1785    IF (v_prg_stat = 'COMPLETE:NORMAL')
1786    THEN
1787       null;
1788    ELSIF (v_prg_stat = 'COMPLETE:WARNING')
1789    THEN
1790       CASE x_prg_stat
1791          WHEN 'COMPLETE:NORMAL' THEN x_prg_stat := 'COMPLETE:WARNING';
1792          ELSE null;
1793       END CASE;
1794    ELSE
1795       x_prg_stat := v_prg_stat;
1796    END IF;
1797 
1798 END LOOP;
1799 
1800 IF (v_sub_req_id = 0)
1801 THEN
1802    RAISE e_no_subreq;
1803 END IF;
1804 
1805 FEM_ENGINES_PKG.TECH_MESSAGE(
1806  p_severity => c_log_level_2,
1807  p_module => v_block||'.x_prg_stat{532}',
1808  p_msg_text => x_prg_stat);
1809 
1810 IF (x_prg_stat = 'COMPLETE:NORMAL')
1811 THEN
1812    FEM_ENGINES_PKG.PUT_MESSAGE(
1813      p_app_name => 'FEM',
1814      p_msg_name => 'FEM_MP_SUBS_NORMAL_TXT',
1815      p_token1 => 'REQUEST',
1816      p_value1 => v_req_name);
1817    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1818 ELSIF (x_prg_stat = 'COMPLETE:WARNING')
1819 THEN
1820    FEM_ENGINES_PKG.PUT_MESSAGE(
1821      p_app_name => 'FEM',
1822      p_msg_name => 'FEM_MP_SUBS_WARN_TXT',
1823      p_token1 => 'REQUEST',
1824      p_value1 => v_req_name);
1825    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1826 ELSE
1827    FEM_ENGINES_PKG.PUT_MESSAGE
1828     (p_app_name => 'FEM',
1829      p_msg_name => 'FEM_MP_SUBS_ERROR_TXT',
1830      p_token1 => 'REQUEST',
1831      p_value1 => v_req_name);
1832    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1833 END IF;
1834 
1835 FEM_ENGINES_PKG.TECH_MESSAGE(
1836  p_severity => c_log_level_3,
1837  p_module => v_block||'.End{533}',
1838  p_msg_text => 'End FEM_MP.MASTER. '||v_prg_msg);
1839 -- FEM_ENGINES_PKG.USER_MESSAGE(
1840 --  p_msg_text => v_prg_msg);
1841 
1842 /*************************************************************************
1843 
1844                            Master: Exception Block
1845 
1846  *************************************************************************/
1847 
1848 EXCEPTION
1849 
1850 WHEN e_soft_kill THEN
1851    FEM_ENGINES_PKG.PUT_MESSAGE(
1852      p_app_name => 'FEM',
1853      p_msg_name => 'FEM_MP_SOFT_KILL_WARN',
1854      p_token1 => 'REQUEST',
1855      p_value1 => v_req_name);
1856    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1857 
1858    FEM_ENGINES_PKG.TECH_MESSAGE(
1859      p_severity => c_log_level_5,
1860      p_module => v_block||'.soft_kill_signal{540}',
1861      p_msg_text => v_prg_msg);
1862    FEM_ENGINES_PKG.USER_MESSAGE(
1863     p_msg_text => v_prg_msg);
1864 
1865    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('WARNING',null);
1866    x_prg_stat := 'COMPLETE:WARNING';
1867    x_exception_code := 'FEM_MP_SOFT_KILL_WARN';
1868 
1869 WHEN e_no_rule_id THEN
1870    FEM_ENGINES_PKG.PUT_MESSAGE
1871     (p_app_name => 'FEM',
1872      p_msg_name => 'FEM_MP_BAD_OBJECT_ERR',
1873      p_token1 => 'REQUEST',
1877    FEM_ENGINES_PKG.TECH_MESSAGE
1874      p_value1 => v_req_name);
1875    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1876 
1878     (p_severity => c_log_level_5,
1879      p_module => v_block||'.get_object_type_code{541}',
1880      p_msg_text => v_prg_msg);
1881    FEM_ENGINES_PKG.USER_MESSAGE(
1882     p_msg_text => v_prg_msg);
1883 
1884    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
1885    x_prg_stat := 'COMPLETE:ERROR';
1886    x_exception_code := 'FEM_MP_BAD_OBJECT_ERR';
1887 
1888 WHEN e_no_mp_method THEN
1889    FEM_ENGINES_PKG.PUT_MESSAGE
1890     (p_app_name => 'FEM',
1891      p_msg_name => 'FEM_MP_NO_METHOD_ERR',
1892      p_token1 => 'REQUEST',
1893      p_value1 => v_req_name);
1894    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1895 
1896    FEM_ENGINES_PKG.TECH_MESSAGE
1897     (p_severity => c_log_level_5,
1898      p_module => v_block||'.get_mp_settings{542}',
1899      p_msg_text => v_prg_msg);
1900    FEM_ENGINES_PKG.USER_MESSAGE(
1901     p_msg_text => v_prg_msg);
1902 
1903    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
1904    x_prg_stat := 'COMPLETE:ERROR';
1905    x_exception_code := 'FEM_MP_NO_METHOD_ERR';
1906 
1907 WHEN e_bad_mp_settings THEN
1908    FEM_ENGINES_PKG.PUT_MESSAGE
1909     (p_app_name => 'FEM',
1910      p_msg_name => 'FEM_MP_BAD_SETTINGS_ERR',
1911      p_token1 => 'REQUEST',
1912      p_value1 => v_req_name);
1913    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1914 
1915    FEM_ENGINES_PKG.TECH_MESSAGE
1916     (p_severity => c_log_level_5,
1917      p_module => v_block||'.get_mp_settings{543}',
1918      p_msg_text => v_prg_msg);
1919    FEM_ENGINES_PKG.USER_MESSAGE(
1920     p_msg_text => v_prg_msg);
1921 
1922    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
1923    x_prg_stat := 'COMPLETE:ERROR';
1924    x_exception_code := 'FEM_MP_BAD_SETTINGS_ERR';
1925 
1926 WHEN e_no_data_slices THEN
1927    FEM_ENGINES_PKG.PUT_MESSAGE
1928     (p_app_name => 'FEM',
1929      p_msg_name => 'FEM_MP_NO_DATA_SLICES_ERR',
1930      p_token1 => 'REQUEST',
1931      p_value1 => v_req_name);
1932    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1933 
1934    FEM_ENGINES_PKG.TECH_MESSAGE
1935     (p_severity => c_log_level_5,
1936      p_module => v_block||'.Build_Data_Slices{544}',
1937      p_msg_text => v_prg_msg);
1938 
1939    --f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
1940    x_prg_stat := 'COMPLETE:ERROR';
1941    x_exception_code := 'FEM_MP_NO_DATA_SLICES_ERR';
1942 
1943 WHEN e_no_subreq THEN
1944    FEM_ENGINES_PKG.PUT_MESSAGE
1945     (p_app_name => 'FEM',
1946      p_msg_name => 'FEM_MP_NO_SUBREQ_ERR',
1947      p_token1 => 'REQUEST',
1948      p_value1 => v_req_name);
1949    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1950 
1951    FEM_ENGINES_PKG.TECH_MESSAGE
1952     (p_severity => c_log_level_5,
1953      p_module => v_block||'.submit_sub_request{545}',
1954      p_msg_text => v_prg_msg);
1955    FEM_ENGINES_PKG.USER_MESSAGE(
1956     p_msg_text => v_prg_msg);
1957 
1958    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
1959    x_prg_stat := 'COMPLETE:ERROR';
1960    x_exception_code := 'FEM_MP_NO_SUBREQ_ERR';
1961 
1962 WHEN others THEN
1963    v_stack := dbms_utility.format_call_stack;
1964 
1965    FEM_ENGINES_PKG.PUT_MESSAGE(
1966      p_app_name => 'FEM',
1967      p_msg_name => 'FEM_MP_UNEXP_ERR',
1968      p_token1 => 'REQUEST',
1969      p_value1 => v_req_name,
1970      p_token2 => 'SQLERRM',
1971      p_value2 => sqlerrm);
1972    v_prg_msg := FND_MSG_PUB.GET(p_encoded => 'F');
1973 
1974    FEM_ENGINES_PKG.TECH_MESSAGE
1975     (p_severity => c_log_level_6,
1976      p_module => v_block||'.exception{546}',
1977      p_msg_text => v_prg_msg||'
1978 '||v_stack);
1979    FEM_ENGINES_PKG.USER_MESSAGE(
1980     p_msg_text => v_prg_msg);
1981 
1982    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
1983    x_prg_stat := 'COMPLETE:ERROR';
1984    x_exception_code := 'FEM_MP_UNEXP_ERR';
1985 
1986 END Master;
1987 
1988 
1989 /**************************************************************************
1990  **************************************************************************
1991 
1992                            =====================
1993                                 Sub_Request
1994                            =====================
1995 
1996  **************************************************************************
1997  **************************************************************************/
1998 
1999 PROCEDURE Sub_Request (
2000 errbuf           OUT     NOCOPY VARCHAR2,
2001 retcode          OUT     NOCOPY VARCHAR2,
2002 p_req_id         IN      NUMBER,
2003 p_mp_method      IN      NUMBER,
2004 p_slc_type       IN      NUMBER,
2005 p_proc_num       IN      NUMBER,
2006 p_part_code      IN      NUMBER,
2007 p_fetch_limit    IN      NUMBER
2008 )
2009 IS
2010 
2011 f_set_status             BOOLEAN;
2012 
2013 v_kill_signal            NUMBER;
2014 v_part_count             NUMBER;
2015 v_slc_id                 NUMBER;
2016 v_slc_stat               NUMBER;
2017 v_sub_stat               NUMBER;
2021 v_rule_id                NUMBER;
2018 v_rows_processed         NUMBER;
2019 v_rows_loaded            NUMBER;
2020 v_rows_rejected          NUMBER;
2022 v_slc_beg                NUMBER;
2023 v_num_vals               NUMBER;
2024 v_slc_len                NUMBER;
2025 v_slc_num                NUMBER;
2026 
2027 v_arg                    VARCHAR2(32767);
2028 v_arg_list               VARCHAR2(32767);
2029 v_args_count             NUMBER;
2030 v_data_slc               VARCHAR2(4000);
2031 v_data_item              VARCHAR2(240);
2032 v_slc_val1               VARCHAR2(240);
2033 v_slc_val2               VARCHAR2(240);
2034 v_slc_val3               VARCHAR2(240);
2035 v_slc_val4               VARCHAR2(240);
2036 v_eng_prg                VARCHAR2(80);
2037 v_eng_prms               VARCHAR2(32767);
2038 v_part_name              VARCHAR2(30);
2039 v_part_next              VARCHAR2(30);
2040 v_slc_msg                VARCHAR2(4000);
2041 v_slc_pred               VARCHAR2(32767);
2042 v_slc_pred1              VARCHAR2(32767);
2043 v_slc_pred2              VARCHAR2(32767);
2044 v_upd_stmt               VARCHAR2(255);
2045 
2046 v_stack                  VARCHAR2(32767);
2047 v_trace                  VARCHAR2(255);
2048 
2049 v_sub_msg                VARCHAR2(4000);
2050 v_sub_req_id             NUMBER := fnd_global.conc_request_id;
2051 
2052 v_block                  VARCHAR2(80) := 'fem.plsql.fem_mp.subreq'||
2053                                          '{p'||p_proc_num||'}';
2054 v_block2                 VARCHAR2(80);
2055 
2056 v_eng_sql_param          VARCHAR2(32767);
2057 v_eng_sql                VARCHAR2(32767);
2058 v_eng_call               VARCHAR2(32767);
2059 
2060 v_sql_cmd                VARCHAR2(32767);
2061 
2062 v_data_num               NUMBER;
2063 v_data_chr               VARCHAR2(150);
2064 
2065 TYPE arg_type            IS TABLE OF VARCHAR2(32767)
2066                             INDEX BY BINARY_INTEGER;
2067 t_arg                    arg_type;
2068 
2069 /*=========================================================================
2070 
2071                      Sub-Request: Execution Block
2072 
2073  =========================================================================*/
2074 
2075 BEGIN
2076 
2077 DBMS_SESSION.SET_SQL_TRACE (sql_trace => FALSE);
2078 v_trace := 'FEM_MP.Subrequest:'||v_sub_req_id;
2079 
2080 FEM_ENGINES_PKG.TECH_MESSAGE
2081  (p_severity => c_log_level_3,
2082   p_module => v_block||'.Begin{600}',
2083   p_msg_text => 'Begin FEM_MP.SUBREQ');
2084 FEM_ENGINES_PKG.TECH_MESSAGE
2085  (p_severity => c_log_level_2,
2086   p_module => v_block||'.v_sub_req_id{601}',
2087   p_msg_text => v_sub_req_id);
2088 FEM_ENGINES_PKG.TECH_MESSAGE
2089  (p_severity => c_log_level_2,
2090   p_module => v_block||'.p_mp_method{602}',
2091   p_msg_text => p_mp_method);
2092 FEM_ENGINES_PKG.TECH_MESSAGE
2093  (p_severity => c_log_level_2,
2094   p_module => v_block||'.p_slc_type{603}',
2095   p_msg_text => p_slc_type);
2096 FEM_ENGINES_PKG.TECH_MESSAGE
2097  (p_severity => c_log_level_2,
2098   p_module => v_block||'.p_proc_num{605}',
2099   p_msg_text => p_proc_num);
2100 FEM_ENGINES_PKG.TECH_MESSAGE
2101  (p_severity => c_log_level_2,
2102   p_module => v_block||'.p_part_code{606}',
2103   p_msg_text => p_part_code);
2104 FEM_ENGINES_PKG.TECH_MESSAGE
2105  (p_severity => c_log_level_2,
2106   p_module => v_block||'.p_fetch_limit{607}',
2107   p_msg_text => p_fetch_limit);
2108 
2109 /*------------------------------------------------------------------------
2110 
2111                           Get stored arguments
2112 
2113  -------------------------------------------------------------------------*/
2114 
2115 IF (p_mp_method = 1)
2116 THEN
2117    SELECT rule_id,eng_prg,eng_sql,slc_pred,arg_count
2118    INTO v_rule_id,v_eng_prg,v_eng_sql_param,v_slc_pred,v_args_count
2119    FROM fem_mp_process_args_t
2120    WHERE req_id = p_req_id;
2121 ELSE
2122    SELECT
2123       rule_id,eng_prg,eng_sql,slc_pred,arg_count,
2124       arg1, arg2, arg3, arg4,
2125       arg5, arg6, arg7, arg8,
2126       arg9, arg10,arg11,arg12,
2127       arg13,arg14,arg15,arg16,
2128       arg17,arg18,arg19,arg20,
2129       arg21,arg22,arg23,arg24,
2130       arg25,arg26,arg27,arg28,
2131       arg29,arg30,arg31,arg32,
2132       arg33,arg34,arg35,arg36,
2133       arg37,arg38,arg39,arg40
2134    INTO
2135       v_rule_id,v_eng_prg,v_eng_sql_param,v_slc_pred,v_args_count,
2136       t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2137       t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2138       t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2139       t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2140       t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2141       t_arg(21),t_arg(22),t_arg(23),t_arg(24),
2142       t_arg(25),t_arg(26),t_arg(27),t_arg(28),
2143       t_arg(29),t_arg(30),t_arg(31),t_arg(32),
2144       t_arg(33),t_arg(34),t_arg(35),t_arg(36),
2145       t_arg(37),t_arg(38),t_arg(39),t_arg(40)
2146    FROM fem_mp_process_args_t
2147    WHERE req_id = p_req_id;
2148 END IF;
2149 
2150 FEM_ENGINES_PKG.TECH_MESSAGE
2151  (p_severity => c_log_level_2,
2152   p_module => v_block||'.v_rule_id{611}',
2153   p_msg_text => v_rule_id);
2154 FEM_ENGINES_PKG.TECH_MESSAGE
2155  (p_severity => c_log_level_2,
2156   p_module => v_block||'.v_eng_prg{612}',
2157   p_msg_text => v_eng_prg);
2161   p_msg_text => v_eng_sql_param);
2158 FEM_ENGINES_PKG.TECH_MESSAGE
2159  (p_severity => c_log_level_1,
2160   p_module => v_block||'.v_eng_sql_param{613}',
2162 FEM_ENGINES_PKG.TECH_MESSAGE
2163  (p_severity => c_log_level_2,
2164   p_module => v_block||'.v_slc_pred{614}',
2165   p_msg_text => v_slc_pred);
2166 FEM_ENGINES_PKG.TECH_MESSAGE
2167  (p_severity => c_log_level_2,
2168   p_module => v_block||'.v_args_count{615}',
2169   p_msg_text => v_args_count);
2170 
2171 IF (p_mp_method <> 1)
2172 THEN
2173    FEM_ENGINES_PKG.TECH_MESSAGE
2174     (p_severity => c_log_level_2,
2175      p_module => v_block||'.t_arg_1{616.1}',
2176      p_msg_text => t_arg(1));
2177    FEM_ENGINES_PKG.TECH_MESSAGE
2178     (p_severity => c_log_level_2,
2179      p_module => v_block||'.t_arg_1{616.2}',
2180      p_msg_text => t_arg(2));
2181    FEM_ENGINES_PKG.TECH_MESSAGE
2182     (p_severity => c_log_level_2,
2183      p_module => v_block||'.t_arg_1{616.3}',
2184      p_msg_text => t_arg(3));
2185    FEM_ENGINES_PKG.TECH_MESSAGE
2186     (p_severity => c_log_level_2,
2187      p_module => v_block||'.t_arg_1{616.4}',
2188      p_msg_text => t_arg(4));
2189    FEM_ENGINES_PKG.TECH_MESSAGE
2190     (p_severity => c_log_level_2,
2191      p_module => v_block||'.t_arg_1{616.5}',
2192      p_msg_text => t_arg(5));
2193    FEM_ENGINES_PKG.TECH_MESSAGE
2194     (p_severity => c_log_level_2,
2195      p_module => v_block||'.t_arg_1{616.6}',
2196      p_msg_text => t_arg(6));
2197    FEM_ENGINES_PKG.TECH_MESSAGE
2198     (p_severity => c_log_level_2,
2199      p_module => v_block||'.t_arg_1{616.7}',
2200      p_msg_text => t_arg(7));
2201    FEM_ENGINES_PKG.TECH_MESSAGE
2202     (p_severity => c_log_level_2,
2203      p_module => v_block||'.t_arg_1{616.8}',
2204      p_msg_text => t_arg(8));
2205    FEM_ENGINES_PKG.TECH_MESSAGE
2206     (p_severity => c_log_level_2,
2207      p_module => v_block||'.t_arg_1{616.9}',
2208      p_msg_text => t_arg(9));
2209    FEM_ENGINES_PKG.TECH_MESSAGE
2210     (p_severity => c_log_level_2,
2211      p_module => v_block||'.t_arg_1{616.10}',
2212      p_msg_text => t_arg(10));
2213    FEM_ENGINES_PKG.TECH_MESSAGE
2214     (p_severity => c_log_level_2,
2215      p_module => v_block||'.t_arg_1{616.11}',
2216      p_msg_text => t_arg(11));
2217    FEM_ENGINES_PKG.TECH_MESSAGE
2218     (p_severity => c_log_level_2,
2219      p_module => v_block||'.t_arg_1{616.12}',
2220      p_msg_text => t_arg(12));
2221    FEM_ENGINES_PKG.TECH_MESSAGE
2222     (p_severity => c_log_level_2,
2223      p_module => v_block||'.t_arg_1{616.13}',
2224      p_msg_text => t_arg(13));
2225    FEM_ENGINES_PKG.TECH_MESSAGE
2226     (p_severity => c_log_level_2,
2227      p_module => v_block||'.t_arg_1{616.14}',
2228      p_msg_text => t_arg(14));
2229    FEM_ENGINES_PKG.TECH_MESSAGE
2230     (p_severity => c_log_level_2,
2231      p_module => v_block||'.t_arg_1{616.15}',
2232      p_msg_text => t_arg(15));
2233    FEM_ENGINES_PKG.TECH_MESSAGE
2234     (p_severity => c_log_level_2,
2235      p_module => v_block||'.t_arg_1{616.16}',
2236      p_msg_text => t_arg(16));
2237    FEM_ENGINES_PKG.TECH_MESSAGE
2238     (p_severity => c_log_level_2,
2239      p_module => v_block||'.t_arg_1{616.17}',
2240      p_msg_text => t_arg(17));
2241    FEM_ENGINES_PKG.TECH_MESSAGE
2242     (p_severity => c_log_level_2,
2243      p_module => v_block||'.t_arg_1{616.18}',
2244      p_msg_text => t_arg(18));
2245    FEM_ENGINES_PKG.TECH_MESSAGE
2246     (p_severity => c_log_level_2,
2247      p_module => v_block||'.t_arg_1{616.19}',
2248      p_msg_text => t_arg(19));
2249    FEM_ENGINES_PKG.TECH_MESSAGE
2250     (p_severity => c_log_level_2,
2251      p_module => v_block||'.t_arg_1{616.20}',
2252      p_msg_text => t_arg(20));
2253    FEM_ENGINES_PKG.TECH_MESSAGE
2254     (p_severity => c_log_level_2,
2255      p_module => v_block||'.t_arg_1{616.21}',
2256      p_msg_text => t_arg(21));
2257    FEM_ENGINES_PKG.TECH_MESSAGE
2258     (p_severity => c_log_level_2,
2259      p_module => v_block||'.t_arg_1{616.22}',
2260      p_msg_text => t_arg(22));
2261    FEM_ENGINES_PKG.TECH_MESSAGE
2262     (p_severity => c_log_level_2,
2263      p_module => v_block||'.t_arg_1{616.23}',
2264      p_msg_text => t_arg(23));
2265    FEM_ENGINES_PKG.TECH_MESSAGE
2266     (p_severity => c_log_level_2,
2267      p_module => v_block||'.t_arg_1{616.24}',
2268      p_msg_text => t_arg(24));
2269    FEM_ENGINES_PKG.TECH_MESSAGE
2270     (p_severity => c_log_level_2,
2271      p_module => v_block||'.t_arg_1{616.25}',
2272      p_msg_text => t_arg(25));
2273    FEM_ENGINES_PKG.TECH_MESSAGE
2274     (p_severity => c_log_level_2,
2275      p_module => v_block||'.t_arg_1{616.26}',
2276      p_msg_text => t_arg(26));
2277    FEM_ENGINES_PKG.TECH_MESSAGE
2278     (p_severity => c_log_level_2,
2279      p_module => v_block||'.t_arg_1{616.27}',
2280      p_msg_text => t_arg(27));
2281    FEM_ENGINES_PKG.TECH_MESSAGE
2282     (p_severity => c_log_level_2,
2283      p_module => v_block||'.t_arg_1{616.28}',
2284      p_msg_text => t_arg(28));
2285    FEM_ENGINES_PKG.TECH_MESSAGE
2286     (p_severity => c_log_level_2,
2287      p_module => v_block||'.t_arg_1{616.29}',
2288      p_msg_text => t_arg(29));
2289    FEM_ENGINES_PKG.TECH_MESSAGE
2290     (p_severity => c_log_level_2,
2291      p_module => v_block||'.t_arg_1{616.30}',
2292      p_msg_text => t_arg(30));
2293    FEM_ENGINES_PKG.TECH_MESSAGE
2297    FEM_ENGINES_PKG.TECH_MESSAGE
2294     (p_severity => c_log_level_2,
2295      p_module => v_block||'.t_arg_1{616.31}',
2296      p_msg_text => t_arg(31));
2298     (p_severity => c_log_level_2,
2299      p_module => v_block||'.t_arg_1{616.32}',
2300      p_msg_text => t_arg(32));
2301    FEM_ENGINES_PKG.TECH_MESSAGE
2302     (p_severity => c_log_level_2,
2303      p_module => v_block||'.t_arg_1{616.33}',
2304      p_msg_text => t_arg(33));
2305    FEM_ENGINES_PKG.TECH_MESSAGE
2306     (p_severity => c_log_level_2,
2307      p_module => v_block||'.t_arg_1{616.34}',
2308      p_msg_text => t_arg(34));
2309    FEM_ENGINES_PKG.TECH_MESSAGE
2310     (p_severity => c_log_level_2,
2311      p_module => v_block||'.t_arg_1{616.35}',
2312      p_msg_text => t_arg(35));
2313    FEM_ENGINES_PKG.TECH_MESSAGE
2314     (p_severity => c_log_level_2,
2315      p_module => v_block||'.t_arg_1{616.36}',
2316      p_msg_text => t_arg(36));
2317    FEM_ENGINES_PKG.TECH_MESSAGE
2318     (p_severity => c_log_level_2,
2319      p_module => v_block||'.t_arg_1{616.37}',
2320      p_msg_text => t_arg(37));
2321    FEM_ENGINES_PKG.TECH_MESSAGE
2322     (p_severity => c_log_level_2,
2323      p_module => v_block||'.t_arg_1{616.38}',
2324      p_msg_text => t_arg(38));
2325    FEM_ENGINES_PKG.TECH_MESSAGE
2326     (p_severity => c_log_level_2,
2327      p_module => v_block||'.t_arg_1{616.39}',
2328      p_msg_text => t_arg(39));
2329    FEM_ENGINES_PKG.TECH_MESSAGE
2330     (p_severity => c_log_level_2,
2331      p_module => v_block||'.t_arg_1{616.40}',
2332      p_msg_text => t_arg(40));
2333 END IF;
2334 
2335 IF (p_mp_method = 2 AND p_slc_type > 0)
2336 THEN
2337 /*----------------------------------------------------------------------
2338 
2339                            Bind Processing
2340 
2341 ----------------------------------------------------------------------*/
2342 
2343    FEM_ENGINES_PKG.TECH_MESSAGE
2344     (p_severity => c_log_level_2,
2345      p_module => v_block||'.Process Method{620}',
2346      p_msg_text => 'Preparing for Bind Processing');
2347 
2348    v_eng_sql := v_eng_sql_param;
2349 
2350    FEM_ENGINES_PKG.TECH_MESSAGE
2351     (p_severity => c_log_level_2,
2352      p_module => v_block||'.v_eng_sql{616}',
2353      p_msg_text => v_eng_sql);
2354 
2355    --------------------------------------------
2356    --    Build call to Engine Push program
2357    --
2358    -- The structure of the call is based on the
2359    --   number of Engine Push program arguments
2360    --------------------------------------------
2361    v_eng_call := 'BEGIN '||v_eng_prg||
2362       '(:b_eng_sql,:b_slc_pred,:b_proc_num,:b_part_code,:b_fetch_limit';
2363 
2364    IF (v_args_count = 0)
2365    THEN
2366       v_eng_call := v_eng_call||');'||
2367          ' END;';
2368 
2369       FEM_ENGINES_PKG.TECH_MESSAGE
2370        (p_severity => c_log_level_1,
2371         p_module => v_block||'.v_eng_call{620.0}',
2372         p_msg_text => v_eng_call);
2373 
2374       EXECUTE IMMEDIATE v_eng_call
2375       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit;
2376 
2377    ELSIF (v_args_count = 1)
2378    THEN
2379       v_eng_call := v_eng_call||','||
2380          ' :b_arg1);'||
2381          ' END;';
2382 
2383       FEM_ENGINES_PKG.TECH_MESSAGE
2384        (p_severity => c_log_level_1,
2385         p_module => v_block||'.v_eng_call{620.1}',
2386         p_msg_text => v_eng_call);
2387 
2388       EXECUTE IMMEDIATE v_eng_call
2389       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2390             t_arg(1);
2391 
2392    ELSIF (v_args_count = 2)
2393    THEN
2394       v_eng_call := v_eng_call||','||
2395          ' :b_arg1, :b_arg2);'||
2396          ' END;';
2397 
2398       FEM_ENGINES_PKG.TECH_MESSAGE
2399        (p_severity => c_log_level_1,
2400         p_module => v_block||'.v_eng_call{620.2}',
2401         p_msg_text => v_eng_call);
2402 
2403       EXECUTE IMMEDIATE v_eng_call
2404       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2405             t_arg(1),t_arg(2);
2406 
2407    ELSIF (v_args_count = 3)
2408    THEN
2409       v_eng_call := v_eng_call||','||
2410          ' :b_arg1, :b_arg2, :b_arg3);'||
2411          ' END;';
2412 
2413       FEM_ENGINES_PKG.TECH_MESSAGE
2414        (p_severity => c_log_level_1,
2415         p_module => v_block||'.v_eng_call{620.3}',
2416         p_msg_text => v_eng_call);
2417 
2418       EXECUTE IMMEDIATE v_eng_call
2419       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2420             t_arg(1),t_arg(2),t_arg(3);
2421 
2422    ELSIF (v_args_count = 4)
2423    THEN
2424       v_eng_call := v_eng_call||','||
2425          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4);'||
2426          ' END;';
2427 
2428       FEM_ENGINES_PKG.TECH_MESSAGE
2429        (p_severity => c_log_level_1,
2430         p_module => v_block||'.v_eng_call{620.4}',
2431         p_msg_text => v_eng_call);
2432 
2433       EXECUTE IMMEDIATE v_eng_call
2434       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2435             t_arg(1),t_arg(2),t_arg(3),t_arg(4);
2436 
2437    ELSIF (v_args_count = 5)
2438    THEN
2439       v_eng_call := v_eng_call||','||
2440          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2441          ' :b_arg5);'||
2445        (p_severity => c_log_level_1,
2442          ' END;';
2443 
2444       FEM_ENGINES_PKG.TECH_MESSAGE
2446         p_module => v_block||'.v_eng_call{620.5}',
2447         p_msg_text => v_eng_call);
2448 
2449       EXECUTE IMMEDIATE v_eng_call
2450       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2451             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2452             t_arg(5);
2453 
2454    ELSIF (v_args_count = 6)
2455    THEN
2456       v_eng_call := v_eng_call||','||
2457          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2458          ' :b_arg5, :b_arg6);'||
2459          ' END;';
2460 
2461       FEM_ENGINES_PKG.TECH_MESSAGE
2462        (p_severity => c_log_level_1,
2463         p_module => v_block||'.v_eng_call{620.6}',
2464         p_msg_text => v_eng_call);
2465 
2466       EXECUTE IMMEDIATE v_eng_call
2467       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2468             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2469             t_arg(5), t_arg(6);
2470 
2471    ELSIF (v_args_count = 7)
2472    THEN
2473       v_eng_call := v_eng_call||','||
2474          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2475          ' :b_arg5, :b_arg6, :b_arg7);'||
2476          ' END;';
2477 
2478       FEM_ENGINES_PKG.TECH_MESSAGE
2479        (p_severity => c_log_level_1,
2480         p_module => v_block||'.v_eng_call{620.7}',
2481         p_msg_text => v_eng_call);
2482 
2483       EXECUTE IMMEDIATE v_eng_call
2484       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2485             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2486             t_arg(5), t_arg(6), t_arg(7);
2487 
2488    ELSIF (v_args_count = 8)
2489    THEN
2490       v_eng_call := v_eng_call||','||
2491          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2492          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8);'||
2493          ' END;';
2494 
2495       FEM_ENGINES_PKG.TECH_MESSAGE
2496        (p_severity => c_log_level_1,
2497         p_module => v_block||'.v_eng_call{620.8}',
2498         p_msg_text => v_eng_call);
2499 
2500       EXECUTE IMMEDIATE v_eng_call
2501       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2502             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2503             t_arg(5), t_arg(6), t_arg(7), t_arg(8);
2504 
2505    ELSIF (v_args_count = 9)
2506    THEN
2507       v_eng_call := v_eng_call||','||
2508          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2509          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2510          ' :b_arg9);'||
2511          ' END;';
2512 
2513       FEM_ENGINES_PKG.TECH_MESSAGE
2514        (p_severity => c_log_level_1,
2515         p_module => v_block||'.v_eng_call{620.9}',
2516         p_msg_text => v_eng_call);
2517 
2518       EXECUTE IMMEDIATE v_eng_call
2519       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2520             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2521             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2522             t_arg(9);
2523 
2524    ELSIF (v_args_count = 10)
2525    THEN
2526       v_eng_call := v_eng_call||','||
2527          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2528          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2529          ' :b_arg9, :b_arg10);'||
2530          ' END;';
2531 
2532       FEM_ENGINES_PKG.TECH_MESSAGE
2533        (p_severity => c_log_level_1,
2534         p_module => v_block||'.v_eng_call{620.10}',
2535         p_msg_text => v_eng_call);
2536 
2537       EXECUTE IMMEDIATE v_eng_call
2538       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2539             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2540             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2541             t_arg(9), t_arg(10);
2542 
2543    ELSIF (v_args_count = 11)
2544    THEN
2545       v_eng_call := v_eng_call||','||
2546          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2547          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2548          ' :b_arg9, :b_arg10,:b_arg11);'||
2549          ' END;';
2550 
2551       FEM_ENGINES_PKG.TECH_MESSAGE
2552        (p_severity => c_log_level_1,
2553         p_module => v_block||'.v_eng_call{620.11}',
2554         p_msg_text => v_eng_call);
2555 
2556       EXECUTE IMMEDIATE v_eng_call
2557       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2558             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2559             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2560             t_arg(9), t_arg(10),t_arg(11);
2561 
2562    ELSIF (v_args_count = 12)
2563    THEN
2564       v_eng_call := v_eng_call||','||
2565          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2566          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2567          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12);'||
2568          ' END;';
2569 
2570       FEM_ENGINES_PKG.TECH_MESSAGE
2571        (p_severity => c_log_level_1,
2572         p_module => v_block||'.v_eng_call{620.12}',
2573         p_msg_text => v_eng_call);
2574 
2575       EXECUTE IMMEDIATE v_eng_call
2576       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2577             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2578             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2579             t_arg(9), t_arg(10),t_arg(11),t_arg(12);
2580 
2581    ELSIF (v_args_count = 13)
2582    THEN
2583       v_eng_call := v_eng_call||','||
2587          ' :b_arg13);'||
2584          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2585          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2586          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2588          ' END;';
2589 
2590       FEM_ENGINES_PKG.TECH_MESSAGE
2591        (p_severity => c_log_level_1,
2592         p_module => v_block||'.v_eng_call{620.13}',
2593         p_msg_text => v_eng_call);
2594 
2595       EXECUTE IMMEDIATE v_eng_call
2596       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2597             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2598             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2599             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2600             t_arg(13);
2601 
2602    ELSIF (v_args_count = 14)
2603    THEN
2604       v_eng_call := v_eng_call||','||
2605          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2606          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2607          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2608          ' :b_arg13,:b_arg14);'||
2609          ' END;';
2610 
2611       FEM_ENGINES_PKG.TECH_MESSAGE
2612        (p_severity => c_log_level_1,
2613         p_module => v_block||'.v_eng_call{620.14}',
2614         p_msg_text => v_eng_call);
2615 
2616       EXECUTE IMMEDIATE v_eng_call
2617       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2618             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2619             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2620             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2621             t_arg(13),t_arg(14);
2622 
2623    ELSIF (v_args_count = 15)
2624    THEN
2625       v_eng_call := v_eng_call||','||
2626          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2627          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2628          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2629          ' :b_arg13,:b_arg14,:b_arg15);'||
2630          ' END;';
2631 
2632       FEM_ENGINES_PKG.TECH_MESSAGE
2633        (p_severity => c_log_level_1,
2634         p_module => v_block||'.v_eng_call{620.15}',
2635         p_msg_text => v_eng_call);
2636 
2637       EXECUTE IMMEDIATE v_eng_call
2638       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2639             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2640             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2641             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2642             t_arg(13),t_arg(14),t_arg(15);
2643 
2644    ELSIF (v_args_count = 16)
2645    THEN
2646       v_eng_call := v_eng_call||','||
2647          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2648          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2649          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2650          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16);'||
2651          ' END;';
2652 
2653       FEM_ENGINES_PKG.TECH_MESSAGE
2654        (p_severity => c_log_level_1,
2655         p_module => v_block||'.v_eng_call{620.16}',
2656         p_msg_text => v_eng_call);
2657 
2658       EXECUTE IMMEDIATE v_eng_call
2659       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2660             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2661             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2662             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2663             t_arg(13),t_arg(14),t_arg(15),t_arg(16);
2664 
2665    ELSIF (v_args_count = 17)
2666    THEN
2667       v_eng_call := v_eng_call||','||
2668          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2669          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2670          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2671          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2672          ' :b_arg17);'||
2673          ' END;';
2674 
2675       FEM_ENGINES_PKG.TECH_MESSAGE
2676        (p_severity => c_log_level_1,
2677         p_module => v_block||'.v_eng_call{620.17}',
2678         p_msg_text => v_eng_call);
2679 
2680       EXECUTE IMMEDIATE v_eng_call
2681       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2682             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2683             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2684             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2685             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2686             t_arg(17);
2687 
2688    ELSIF (v_args_count = 18)
2689    THEN
2690       v_eng_call := v_eng_call||','||
2691          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2692          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2693          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2694          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2695          ' :b_arg17,:b_arg18);'||
2696          ' END;';
2697 
2698       FEM_ENGINES_PKG.TECH_MESSAGE
2699        (p_severity => c_log_level_1,
2700         p_module => v_block||'.v_eng_call{620.18}',
2701         p_msg_text => v_eng_call);
2702 
2703       EXECUTE IMMEDIATE v_eng_call
2704       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2705             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2706             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2707             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2708             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2709             t_arg(17),t_arg(18);
2710 
2711    ELSIF (v_args_count = 19)
2712    THEN
2713       v_eng_call := v_eng_call||','||
2714          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2715          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2719          ' END;';
2716          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2717          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2718          ' :b_arg17,:b_arg18,:b_arg19);'||
2720 
2721       FEM_ENGINES_PKG.TECH_MESSAGE
2722        (p_severity => c_log_level_1,
2723         p_module => v_block||'.v_eng_call{620.19}',
2724         p_msg_text => v_eng_call);
2725 
2726       EXECUTE IMMEDIATE v_eng_call
2727       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2728             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2729             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2730             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2731             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2732             t_arg(17),t_arg(18),t_arg(19);
2733 
2734    ELSIF (v_args_count = 20)
2735    THEN
2736       v_eng_call := v_eng_call||','||
2737          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2738          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2739          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2740          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2741          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20);'||
2742          ' END;';
2743 
2744       FEM_ENGINES_PKG.TECH_MESSAGE
2745        (p_severity => c_log_level_1,
2746         p_module => v_block||'.v_eng_call{620.20}',
2747         p_msg_text => v_eng_call);
2748 
2749       EXECUTE IMMEDIATE v_eng_call
2750       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2751             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2752             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2753             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2754             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2755             t_arg(17),t_arg(18),t_arg(19),t_arg(20);
2756 
2757    ELSIF (v_args_count = 21)
2758    THEN
2759       v_eng_call := v_eng_call||','||
2760          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2761          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2762          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2763          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2764          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2765          ' :b_arg21);'||
2766          ' END;';
2767 
2768       FEM_ENGINES_PKG.TECH_MESSAGE
2769        (p_severity => c_log_level_1,
2770         p_module => v_block||'.v_eng_call{620.21}',
2771         p_msg_text => v_eng_call);
2772 
2773       EXECUTE IMMEDIATE v_eng_call
2774       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2775             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2776             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2777             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2778             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2779             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2780             t_arg(21);
2781 
2782    ELSIF (v_args_count = 22)
2783    THEN
2784       v_eng_call := v_eng_call||','||
2785          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2786          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2787          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2788          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2789          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2790          ' :b_arg21,:b_arg22);'||
2791          ' END;';
2792 
2793       FEM_ENGINES_PKG.TECH_MESSAGE
2794        (p_severity => c_log_level_1,
2795         p_module => v_block||'.v_eng_call{620.22}',
2796         p_msg_text => v_eng_call);
2797 
2798       EXECUTE IMMEDIATE v_eng_call
2799       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2800             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2801             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2802             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2803             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2804             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2805             t_arg(21),t_arg(22);
2806 
2807    ELSIF (v_args_count = 23)
2808    THEN
2809       v_eng_call := v_eng_call||','||
2810          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2811          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2812          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2813          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2814          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2815          ' :b_arg21,:b_arg22,:b_arg23);'||
2816          ' END;';
2817 
2818       FEM_ENGINES_PKG.TECH_MESSAGE
2819        (p_severity => c_log_level_1,
2820         p_module => v_block||'.v_eng_call{620.23}',
2821         p_msg_text => v_eng_call);
2822 
2823       EXECUTE IMMEDIATE v_eng_call
2824       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2825             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2826             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2827             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2828             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2829             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2830             t_arg(21),t_arg(22),t_arg(23);
2831 
2832    ELSIF (v_args_count = 24)
2833    THEN
2834       v_eng_call := v_eng_call||','||
2835          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2836          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2837          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2838          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2839          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2840          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24);'||
2841          ' END;';
2842 
2843       FEM_ENGINES_PKG.TECH_MESSAGE
2847 
2844        (p_severity => c_log_level_1,
2845         p_module => v_block||'.v_eng_call{620.24}',
2846         p_msg_text => v_eng_call);
2848       EXECUTE IMMEDIATE v_eng_call
2849       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2850             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2851             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2852             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2853             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2854             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2855             t_arg(21),t_arg(22),t_arg(23),t_arg(24);
2856 
2857    ELSIF (v_args_count = 25)
2858    THEN
2859       v_eng_call := v_eng_call||','||
2860          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2861          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2862          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2863          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2864          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2865          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
2866          ' :b_arg25);'||
2867          ' END;';
2868 
2869       FEM_ENGINES_PKG.TECH_MESSAGE
2870        (p_severity => c_log_level_1,
2871         p_module => v_block||'.v_eng_call{620.25}',
2872         p_msg_text => v_eng_call);
2873 
2874       EXECUTE IMMEDIATE v_eng_call
2875       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2876             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2877             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2878             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2879             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2880             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2881             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
2882             t_arg(25);
2883 
2884    ELSIF (v_args_count = 26)
2885    THEN
2886       v_eng_call := v_eng_call||','||
2887          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2888          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2889          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2890          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2891          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2892          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
2893          ' :b_arg25,:b_arg26);'||
2894          ' END;';
2895 
2896       FEM_ENGINES_PKG.TECH_MESSAGE
2897        (p_severity => c_log_level_1,
2898         p_module => v_block||'.v_eng_call{620.26}',
2899         p_msg_text => v_eng_call);
2900 
2901       EXECUTE IMMEDIATE v_eng_call
2902       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2903             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2904             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2905             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2906             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2907             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2908             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
2909             t_arg(25),t_arg(26);
2910 
2911    ELSIF (v_args_count = 27)
2912    THEN
2913       v_eng_call := v_eng_call||','||
2914          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2915          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2916          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2917          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2918          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2919          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
2920          ' :b_arg25,:b_arg26,:b_arg27);'||
2921          ' END;';
2922 
2923       FEM_ENGINES_PKG.TECH_MESSAGE
2924        (p_severity => c_log_level_1,
2925         p_module => v_block||'.v_eng_call{620.27}',
2926         p_msg_text => v_eng_call);
2927 
2928       EXECUTE IMMEDIATE v_eng_call
2929       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2930             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2931             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2932             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2933             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2934             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2935             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
2936             t_arg(25),t_arg(26),t_arg(27);
2937 
2938    ELSIF (v_args_count = 28)
2939    THEN
2940       v_eng_call := v_eng_call||','||
2941          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2942          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2943          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2944          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2945          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2946          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
2947          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28);'||
2948          ' END;';
2949 
2950       FEM_ENGINES_PKG.TECH_MESSAGE
2951        (p_severity => c_log_level_1,
2952         p_module => v_block||'.v_eng_call{620.28}',
2953         p_msg_text => v_eng_call);
2954 
2955       EXECUTE IMMEDIATE v_eng_call
2956       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2957             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2958             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2959             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2960             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2961             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2962             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
2963             t_arg(25),t_arg(26),t_arg(27),t_arg(28);
2964 
2965    ELSIF (v_args_count = 29)
2966    THEN
2967       v_eng_call := v_eng_call||','||
2971          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
2968          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2969          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2970          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
2972          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
2973          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
2974          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
2975          ' :b_arg29);'||
2976          ' END;';
2977 
2978       FEM_ENGINES_PKG.TECH_MESSAGE
2979        (p_severity => c_log_level_1,
2980         p_module => v_block||'.v_eng_call{620.29}',
2981         p_msg_text => v_eng_call);
2982 
2983       EXECUTE IMMEDIATE v_eng_call
2984       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
2985             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
2986             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
2987             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
2988             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
2989             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
2990             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
2991             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
2992             t_arg(29);
2993 
2994    ELSIF (v_args_count = 30)
2995    THEN
2996       v_eng_call := v_eng_call||','||
2997          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
2998          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
2999          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3000          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3001          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3002          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3003          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3004          ' :b_arg29,:b_arg30);'||
3005          ' END;';
3006 
3007       FEM_ENGINES_PKG.TECH_MESSAGE
3008        (p_severity => c_log_level_1,
3009         p_module => v_block||'.v_eng_call{620.30}',
3010         p_msg_text => v_eng_call);
3011 
3012       EXECUTE IMMEDIATE v_eng_call
3013       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3014             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3015             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3016             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3017             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3018             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3019             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3020             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3021             t_arg(29),t_arg(30);
3022 
3023    ELSIF (v_args_count = 31)
3024    THEN
3025       v_eng_call := v_eng_call||','||
3026          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3027          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3028          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3029          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3030          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3031          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3032          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3033          ' :b_arg29,:b_arg30,:b_arg31);'||
3034          ' END;';
3035 
3036       FEM_ENGINES_PKG.TECH_MESSAGE
3037        (p_severity => c_log_level_1,
3038         p_module => v_block||'.v_eng_call{620.31}',
3039         p_msg_text => v_eng_call);
3040 
3041       EXECUTE IMMEDIATE v_eng_call
3042       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3043             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3044             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3045             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3046             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3047             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3048             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3049             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3050             t_arg(29),t_arg(30),t_arg(31);
3051 
3052    ELSIF (v_args_count = 32)
3053    THEN
3054       v_eng_call := v_eng_call||','||
3055          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3056          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3057          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3058          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3059          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3060          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3061          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3062          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32);'||
3063          ' END;';
3064 
3065       FEM_ENGINES_PKG.TECH_MESSAGE
3066        (p_severity => c_log_level_1,
3067         p_module => v_block||'.v_eng_call{620.32}',
3068         p_msg_text => v_eng_call);
3069 
3070       EXECUTE IMMEDIATE v_eng_call
3071       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3072             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3073             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3074             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3075             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3076             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3077             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3078             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3079             t_arg(29),t_arg(30),t_arg(31),t_arg(32);
3080 
3081    ELSIF (v_args_count = 33)
3082    THEN
3083       v_eng_call := v_eng_call||','||
3084          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3085          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3086          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3087          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3088          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3092          ' :b_arg33);'||
3089          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3090          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3091          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3093          ' END;';
3094 
3095       FEM_ENGINES_PKG.TECH_MESSAGE
3096        (p_severity => c_log_level_1,
3097         p_module => v_block||'.v_eng_call{620.33}',
3098         p_msg_text => v_eng_call);
3099 
3100       EXECUTE IMMEDIATE v_eng_call
3101       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3102             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3103             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3104             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3105             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3106             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3107             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3108             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3109             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3110             t_arg(33);
3111 
3112    ELSIF (v_args_count = 34)
3113    THEN
3114       v_eng_call := v_eng_call||','||
3115          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3116          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3117          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3118          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3119          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3120          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3121          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3122          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3123          ' :b_arg33,:b_arg34);'||
3124          ' END;';
3125 
3126       FEM_ENGINES_PKG.TECH_MESSAGE
3127        (p_severity => c_log_level_1,
3128         p_module => v_block||'.v_eng_call{620.34}',
3129         p_msg_text => v_eng_call);
3130 
3131       EXECUTE IMMEDIATE v_eng_call
3132       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3133             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3134             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3135             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3136             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3137             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3138             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3139             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3140             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3141             t_arg(33),t_arg(34);
3142 
3143    ELSIF (v_args_count = 35)
3144    THEN
3145       v_eng_call := v_eng_call||','||
3146          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3147          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3148          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3149          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3150          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3151          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3152          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3153          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3154          ' :b_arg33,:b_arg34,:b_arg35);'||
3155          ' END;';
3156 
3157       FEM_ENGINES_PKG.TECH_MESSAGE
3158        (p_severity => c_log_level_1,
3159         p_module => v_block||'.v_eng_call{620.35}',
3160         p_msg_text => v_eng_call);
3161 
3162       EXECUTE IMMEDIATE v_eng_call
3163       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3164             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3165             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3166             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3167             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3168             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3169             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3170             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3171             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3172             t_arg(33),t_arg(34),t_arg(35);
3173 
3174    ELSIF (v_args_count = 36)
3175    THEN
3176       v_eng_call := v_eng_call||','||
3177          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3178          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3179          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3180          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3181          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3182          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3183          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3184          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3185          ' :b_arg33,:b_arg34,:b_arg35,:b_arg36);'||
3186          ' END;';
3187 
3188       FEM_ENGINES_PKG.TECH_MESSAGE
3189        (p_severity => c_log_level_1,
3190         p_module => v_block||'.v_eng_call{620.36}',
3191         p_msg_text => v_eng_call);
3192 
3193       EXECUTE IMMEDIATE v_eng_call
3194       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3195             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3196             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3197             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3198             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3199             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3200             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3201             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3202             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3203             t_arg(33),t_arg(34),t_arg(35),t_arg(36);
3204 
3205    ELSIF (v_args_count = 37)
3206    THEN
3207       v_eng_call := v_eng_call||','||
3208          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3212          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3209          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3210          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3211          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3213          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3214          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3215          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3216          ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
3217          ' :b_arg37);'||
3218          ' END;';
3219 
3220       FEM_ENGINES_PKG.TECH_MESSAGE
3221        (p_severity => c_log_level_1,
3222         p_module => v_block||'.v_eng_call{620.37}',
3223         p_msg_text => v_eng_call);
3224 
3225       EXECUTE IMMEDIATE v_eng_call
3226       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3227             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3228             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3229             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3230             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3231             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3232             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3233             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3234             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3235             t_arg(33),t_arg(34),t_arg(35),t_arg(36),
3236             t_arg(37);
3237 
3238    ELSIF (v_args_count = 38)
3239    THEN
3240       v_eng_call := v_eng_call||','||
3241          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3242          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3243          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3244          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3245          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3246          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3247          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3248          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3249          ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
3250          ' :b_arg37,:b_arg38);'||
3251          ' END;';
3252 
3253       FEM_ENGINES_PKG.TECH_MESSAGE
3254        (p_severity => c_log_level_1,
3255         p_module => v_block||'.v_eng_call{620.38}',
3256         p_msg_text => v_eng_call);
3257 
3258       EXECUTE IMMEDIATE v_eng_call
3259       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3260             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3261             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3262             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3263             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3264             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3265             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3266             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3267             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3268             t_arg(33),t_arg(34),t_arg(35),t_arg(36),
3269             t_arg(37),t_arg(38);
3270 
3271    ELSIF (v_args_count = 39)
3272    THEN
3273       v_eng_call := v_eng_call||','||
3274          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3275          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3276          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3277          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3278          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3279          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3280          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3281          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3282          ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
3283          ' :b_arg37,:b_arg38,:b_arg39);'||
3284          ' END;';
3285 
3286       FEM_ENGINES_PKG.TECH_MESSAGE
3287        (p_severity => c_log_level_1,
3288         p_module => v_block||'.v_eng_call{620.39}',
3289         p_msg_text => v_eng_call);
3290 
3291       EXECUTE IMMEDIATE v_eng_call
3292       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3293             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3294             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3295             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3296             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3297             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3298             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3299             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3300             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3301             t_arg(33),t_arg(34),t_arg(35),t_arg(36),
3302             t_arg(37),t_arg(38),t_arg(39);
3303 
3304    ELSIF (v_args_count = 40)
3305    THEN
3306       v_eng_call := v_eng_call||','||
3307          ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3308          ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3309          ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3310          ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3311          ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3312          ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
3313          ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
3314          ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
3315          ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
3316          ' :b_arg37,:b_arg38,:b_arg39,:b_arg40);'||
3317          ' END;';
3318 
3319       FEM_ENGINES_PKG.TECH_MESSAGE
3320        (p_severity => c_log_level_1,
3321         p_module => v_block||'.v_eng_call{620.40}',
3322         p_msg_text => v_eng_call);
3323 
3324       EXECUTE IMMEDIATE v_eng_call
3325       USING v_eng_sql,v_slc_pred,p_proc_num,p_part_code,p_fetch_limit,
3326             t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3327             t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3331             t_arg(21),t_arg(22),t_arg(23),t_arg(24),
3328             t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3329             t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3330             t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3332             t_arg(25),t_arg(26),t_arg(27),t_arg(28),
3333             t_arg(29),t_arg(30),t_arg(31),t_arg(32),
3334             t_arg(33),t_arg(34),t_arg(35),t_arg(36),
3335             t_arg(37),t_arg(38),t_arg(39),t_arg(40);
3336 
3337    END IF;
3338 
3339 ELSIF (p_mp_method <> 2 AND p_slc_type > 0)
3340 THEN
3341 /*----------------------------------------------------------------------
3342 
3343                         Pull or Push Processing
3344 
3345 ----------------------------------------------------------------------*/
3346 
3347 LOOP
3348 
3349    IF (p_mp_method = 0)
3350    THEN
3351       FEM_ENGINES_PKG.TECH_MESSAGE
3352        (p_severity => c_log_level_2,
3353         p_module => v_block||'.Process Method{630}',
3354         p_msg_text => 'Preparing for Push Processing');
3355    ELSE
3356       FEM_ENGINES_PKG.TECH_MESSAGE
3357        (p_severity => c_log_level_2,
3358         p_module => v_block||'.Process Method{630}',
3359         p_msg_text => 'Preparing for Pull Processing');
3360    END IF;
3361 
3362    ---------------------------
3363    -- Get Data Slice Values --
3364    ---------------------------
3365    Get_Data_Slice
3366    (x_slc_id => v_slc_id,
3367     x_slc_val1 => v_slc_val1,
3368     x_slc_val2 => v_slc_val2,
3369     x_slc_val3 => v_slc_val3,
3370     x_slc_val4 => v_slc_val4,
3371     x_num_vals  => v_num_vals,
3372     x_part_name => v_part_name,
3373     p_req_id => p_req_id,
3374     p_proc_num => p_proc_num);
3375 
3376    FEM_ENGINES_PKG.TECH_MESSAGE
3377     (p_severity => c_log_level_2,
3378      p_module => v_block||'.v_slc_id{631}',
3379      p_msg_text => v_slc_id);
3380    FEM_ENGINES_PKG.TECH_MESSAGE
3381     (p_severity => c_log_level_2,
3382      p_module => v_block||'.v_num_vals{632}',
3383      p_msg_text => v_num_vals);
3384    FEM_ENGINES_PKG.TECH_MESSAGE
3385     (p_severity => c_log_level_2,
3386      p_module => v_block||'.v_slc_val1{632.1}',
3387      p_msg_text => v_slc_val1);
3388    FEM_ENGINES_PKG.TECH_MESSAGE
3389     (p_severity => c_log_level_2,
3390      p_module => v_block||'.v_slc_val2{632.2}',
3391      p_msg_text => v_slc_val2);
3392    FEM_ENGINES_PKG.TECH_MESSAGE
3393     (p_severity => c_log_level_2,
3394      p_module => v_block||'.v_slc_val3{632.3}',
3395      p_msg_text => v_slc_val3);
3396    FEM_ENGINES_PKG.TECH_MESSAGE
3397     (p_severity => c_log_level_2,
3398      p_module => v_block||'.v_slc_val4{632.4}',
3399      p_msg_text => v_slc_val4);
3400 
3401    EXIT WHEN (v_slc_id IS NULL);
3402 
3403    v_block2 := REPLACE(v_block,'}',':s'||v_slc_id||'}');
3404 
3405    IF (v_num_vals > 0)
3406    THEN
3407 
3408       FEM_ENGINES_PKG.TECH_MESSAGE
3409        (p_severity => c_log_level_2,
3410         p_module => v_block2||'.v_part_name{633}',
3411         p_msg_text => v_part_name);
3412 
3413       IF (v_part_name IS NULL)
3414       THEN
3415          v_eng_sql := REPLACE(v_eng_sql_param,'{{table_partition}}',' ');
3416       ELSE
3417          v_eng_sql := REPLACE(v_eng_sql_param,'{{table_partition}}',
3418                               ' PARTITION(' || v_part_name || ') ');
3419       END IF;
3420 
3421       FEM_ENGINES_PKG.TECH_MESSAGE
3422        (p_severity => c_log_level_2,
3423         p_module => v_block||'.v_eng_sql{634}',
3424         p_msg_text => v_eng_sql);
3425 
3426    END IF;
3427 
3428    IF (v_num_vals > 0 AND p_mp_method = 0)
3429    THEN
3430    /*----------------------------------------------------------------------
3431 
3432                            Push Processing
3433 
3434    ---------------------------------------------------------------------*/
3435 
3436       v_slc_pred1 := v_slc_pred;
3437 
3438       FEM_ENGINES_PKG.TECH_MESSAGE
3439        (p_severity => c_log_level_2,
3440         p_module => v_block2||'.v_slc_pred1{640}',
3441         p_msg_text => v_slc_pred1);
3442 
3443       -------------------------------
3444       -- Prepare data slice predicate
3445       -------------------------------
3446       IF (v_num_vals = 1)
3447       THEN
3448          v_slc_pred2 := REPLACE(v_slc_pred1,':b_val_1',
3449                                    ''''''||v_slc_val1||'''''');
3450          v_data_slc := v_slc_pred2;
3451       ELSIF (v_num_vals = 2)
3452       THEN
3453          v_slc_pred2 := REPLACE(v_slc_pred1,':b_val_1',
3454                                 ''''''||v_slc_val1||'''''');
3455          v_slc_pred1 := REPLACE(v_slc_pred2,':b_val_2',
3456                                 ''''''||v_slc_val2||'''''');
3457          v_data_slc := v_slc_pred1;
3458       ELSIF (v_num_vals = 3)
3459       THEN
3460          v_slc_pred2 := REPLACE(v_slc_pred1,':b_val_1',
3461                                 ''''''||v_slc_val1||'''''');
3462          v_slc_pred1 := REPLACE(v_slc_pred2,':b_val_2',
3463                                 ''''''||v_slc_val2||'''''');
3464          v_slc_pred2 := REPLACE(v_slc_pred1,':b_val_3',
3465                                 ''''''||v_slc_val3||'''''');
3466          v_data_slc := v_slc_pred2;
3467       ELSIF (v_num_vals = 4)
3468       THEN
3472                                 ''''''||v_slc_val2||'''''');
3469          v_slc_pred2 := REPLACE(v_slc_pred1,':b_val_1',
3470                                 ''''''||v_slc_val1||'''''');
3471          v_slc_pred1 := REPLACE(v_slc_pred2,':b_val_2',
3473          v_slc_pred2 := REPLACE(v_slc_pred1,':b_val_3',
3474                                 ''''''||v_slc_val3||'''''');
3475          v_slc_pred1 := REPLACE(v_slc_pred2,':b_val_4',
3476                                 ''''''||v_slc_val4||'''''');
3477          v_data_slc := v_slc_pred1;
3478       END IF;
3479 
3480       FEM_ENGINES_PKG.TECH_MESSAGE
3481        (p_severity => c_log_level_2,
3482         p_module => v_block2||'.v_data_slc{641}',
3483         p_msg_text => v_data_slc);
3484 
3485       ------------------------------------
3486       -- Build call to Engine Push program
3487       ------------------------------------
3488       v_eng_call := 'DECLARE '||
3489          'x_slc_stat NUMBER; '||
3490          'x_slc_msg VARCHAR2(4000); '||
3491          'x_rows_processed NUMBER; '||
3492          'x_rows_loaded NUMBER; '||
3493          'x_rows_rejected NUMBER; '||
3494          'BEGIN '||v_eng_prg||
3495          '(x_slc_stat,x_slc_msg,'||
3496          ' x_rows_processed,x_rows_loaded,x_rows_rejected,'||
3497          ' :b_eng_sql,'''||v_data_slc||''','||
3498          ' :b_proc_num,:b_slc_id1,:b_fetch_limit';
3499 
3500       v_upd_stmt :=
3501          ' UPDATE fem_mp_process_ctl_t'||
3502          ' SET rows_processed = x_rows_processed,'||
3503          '     rows_loaded = x_rows_loaded,'||
3504          '     rows_rejected = x_rows_rejected,'||
3505          '     status = x_slc_stat,'||
3506          '     message = x_slc_msg'||
3507          ' WHERE req_id = :b_req_id'||
3508          ' AND slice_id = :b_slc_id2 ;'||
3509          ' COMMIT; '||
3510          'END;';
3511 
3512       ---------------------------------------------
3513       -- Add arguments and append Update statement
3514       -- to Engine Call statement
3515       --------------------------------------------
3516       IF (v_args_count = 0)
3517       THEN
3518          v_eng_call := v_eng_call||');'||
3519                        v_upd_stmt;
3520 
3521          FEM_ENGINES_PKG.TECH_MESSAGE
3522           (p_severity => c_log_level_1,
3523            p_module => v_block2||'.v_eng_call{642.0}',
3524            p_msg_text => v_eng_call);
3525 
3526          EXECUTE IMMEDIATE v_eng_call
3527          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3528                p_req_id,v_slc_id;
3529 
3530       ELSIF (v_args_count = 1)
3531       THEN
3532          v_eng_call := v_eng_call||','||
3533             ' :b_arg1);'||
3534          v_upd_stmt;
3535 
3536          FEM_ENGINES_PKG.TECH_MESSAGE
3537           (p_severity => c_log_level_1,
3538            p_module => v_block||'.v_eng_call{620.1}',
3539            p_msg_text => v_eng_call);
3540 
3541          EXECUTE IMMEDIATE v_eng_call
3542          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3543                t_arg(1),
3544                p_req_id,v_slc_id;
3545 
3546       ELSIF (v_args_count = 2)
3547       THEN
3548          v_eng_call := v_eng_call||','||
3549             ' :b_arg1, :b_arg2);'||
3550          v_upd_stmt;
3551 
3552          FEM_ENGINES_PKG.TECH_MESSAGE
3553           (p_severity => c_log_level_1,
3554            p_module => v_block||'.v_eng_call{620.2}',
3555            p_msg_text => v_eng_call);
3556 
3557          EXECUTE IMMEDIATE v_eng_call
3558          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3559                t_arg(1),t_arg(2),
3560                p_req_id,v_slc_id;
3561 
3562       ELSIF (v_args_count = 3)
3563       THEN
3564          v_eng_call := v_eng_call||','||
3565             ' :b_arg1, :b_arg2, :b_arg3);'||
3566          v_upd_stmt;
3567 
3568          FEM_ENGINES_PKG.TECH_MESSAGE
3569           (p_severity => c_log_level_1,
3570            p_module => v_block||'.v_eng_call{620.3}',
3571            p_msg_text => v_eng_call);
3572 
3573          EXECUTE IMMEDIATE v_eng_call
3574          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3575                t_arg(1),t_arg(2),t_arg(3),
3576                p_req_id,v_slc_id;
3577 
3578       ELSIF (v_args_count = 4)
3579       THEN
3580          v_eng_call := v_eng_call||','||
3581             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4);'||
3582          v_upd_stmt;
3583 
3584          FEM_ENGINES_PKG.TECH_MESSAGE
3585           (p_severity => c_log_level_1,
3586            p_module => v_block||'.v_eng_call{620.4}',
3587            p_msg_text => v_eng_call);
3588 
3589          EXECUTE IMMEDIATE v_eng_call
3590          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3591                t_arg(1),t_arg(2),t_arg(3),t_arg(4),
3592                p_req_id,v_slc_id;
3593 
3594       ELSIF (v_args_count = 5)
3595       THEN
3596          v_eng_call := v_eng_call||','||
3597             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3598             ' :b_arg5);'||
3599          v_upd_stmt;
3600 
3601          FEM_ENGINES_PKG.TECH_MESSAGE
3602           (p_severity => c_log_level_1,
3603            p_module => v_block||'.v_eng_call{620.5}',
3604            p_msg_text => v_eng_call);
3605 
3606          EXECUTE IMMEDIATE v_eng_call
3610                p_req_id,v_slc_id;
3607          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3608                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3609                t_arg(5),
3611 
3612       ELSIF (v_args_count = 6)
3613       THEN
3614          v_eng_call := v_eng_call||','||
3615             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3616             ' :b_arg5, :b_arg6);'||
3617          v_upd_stmt;
3618 
3619          FEM_ENGINES_PKG.TECH_MESSAGE
3620           (p_severity => c_log_level_1,
3621            p_module => v_block||'.v_eng_call{620.6}',
3622            p_msg_text => v_eng_call);
3623 
3624          EXECUTE IMMEDIATE v_eng_call
3625          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3626                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3627                t_arg(5), t_arg(6),
3628                p_req_id,v_slc_id;
3629 
3630       ELSIF (v_args_count = 7)
3631       THEN
3632          v_eng_call := v_eng_call||','||
3633             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3634             ' :b_arg5, :b_arg6, :b_arg7);'||
3635          v_upd_stmt;
3636 
3637          FEM_ENGINES_PKG.TECH_MESSAGE
3638           (p_severity => c_log_level_1,
3639            p_module => v_block||'.v_eng_call{620.7}',
3640            p_msg_text => v_eng_call);
3641 
3642          EXECUTE IMMEDIATE v_eng_call
3643          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3644                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3645                t_arg(5), t_arg(6), t_arg(7),
3646                p_req_id,v_slc_id;
3647 
3648       ELSIF (v_args_count = 8)
3649       THEN
3650          v_eng_call := v_eng_call||','||
3651             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3652             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8);'||
3653          v_upd_stmt;
3654 
3655          FEM_ENGINES_PKG.TECH_MESSAGE
3656           (p_severity => c_log_level_1,
3657            p_module => v_block||'.v_eng_call{620.8}',
3658            p_msg_text => v_eng_call);
3659 
3660          EXECUTE IMMEDIATE v_eng_call
3661          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3662                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3663                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3664                p_req_id,v_slc_id;
3665 
3666       ELSIF (v_args_count = 9)
3667       THEN
3668          v_eng_call := v_eng_call||','||
3669             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3670             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3671             ' :b_arg9);'||
3672          v_upd_stmt;
3673 
3674          FEM_ENGINES_PKG.TECH_MESSAGE
3675           (p_severity => c_log_level_1,
3676            p_module => v_block||'.v_eng_call{620.9}',
3677            p_msg_text => v_eng_call);
3678 
3679          EXECUTE IMMEDIATE v_eng_call
3680          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3681                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3682                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3683                t_arg(9),
3684                p_req_id,v_slc_id;
3685 
3686       ELSIF (v_args_count = 10)
3687       THEN
3688          v_eng_call := v_eng_call||','||
3689             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3690             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3691             ' :b_arg9, :b_arg10);'||
3692          v_upd_stmt;
3693 
3694          FEM_ENGINES_PKG.TECH_MESSAGE
3695           (p_severity => c_log_level_1,
3696            p_module => v_block||'.v_eng_call{620.10}',
3697            p_msg_text => v_eng_call);
3698 
3699          EXECUTE IMMEDIATE v_eng_call
3700          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3701                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3702                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3703                t_arg(9), t_arg(10),
3704                p_req_id,v_slc_id;
3705 
3706       ELSIF (v_args_count = 11)
3707       THEN
3708          v_eng_call := v_eng_call||','||
3709             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3710             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3711             ' :b_arg9, :b_arg10,:b_arg11);'||
3712          v_upd_stmt;
3713 
3714          FEM_ENGINES_PKG.TECH_MESSAGE
3715           (p_severity => c_log_level_1,
3716            p_module => v_block||'.v_eng_call{620.11}',
3717            p_msg_text => v_eng_call);
3718 
3719          EXECUTE IMMEDIATE v_eng_call
3720          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3721                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3722                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3723                t_arg(9), t_arg(10),t_arg(11),
3724                p_req_id,v_slc_id;
3725 
3726       ELSIF (v_args_count = 12)
3727       THEN
3728          v_eng_call := v_eng_call||','||
3729             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3730             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3731             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12);'||
3732          v_upd_stmt;
3733 
3734          FEM_ENGINES_PKG.TECH_MESSAGE
3735           (p_severity => c_log_level_1,
3736            p_module => v_block||'.v_eng_call{620.12}',
3737            p_msg_text => v_eng_call);
3738 
3739          EXECUTE IMMEDIATE v_eng_call
3740          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3744                p_req_id,v_slc_id;
3741                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3742                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3743                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3745 
3746       ELSIF (v_args_count = 13)
3747       THEN
3748          v_eng_call := v_eng_call||','||
3749             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3750             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3751             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3752             ' :b_arg13);'||
3753          v_upd_stmt;
3754 
3755          FEM_ENGINES_PKG.TECH_MESSAGE
3756           (p_severity => c_log_level_1,
3757            p_module => v_block||'.v_eng_call{620.13}',
3758            p_msg_text => v_eng_call);
3759 
3760          EXECUTE IMMEDIATE v_eng_call
3761          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3762                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3763                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3764                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3765                t_arg(13),
3766                p_req_id,v_slc_id;
3767 
3768       ELSIF (v_args_count = 14)
3769       THEN
3770          v_eng_call := v_eng_call||','||
3771             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3772             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3773             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3774             ' :b_arg13,:b_arg14);'||
3775          v_upd_stmt;
3776 
3777          FEM_ENGINES_PKG.TECH_MESSAGE
3778           (p_severity => c_log_level_1,
3779            p_module => v_block||'.v_eng_call{620.14}',
3780            p_msg_text => v_eng_call);
3781 
3782          EXECUTE IMMEDIATE v_eng_call
3783          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3784                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3785                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3786                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3787                t_arg(13),t_arg(14),
3788                p_req_id,v_slc_id;
3789 
3790       ELSIF (v_args_count = 15)
3791       THEN
3792          v_eng_call := v_eng_call||','||
3793             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3794             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3795             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3796             ' :b_arg13,:b_arg14,:b_arg15);'||
3797          v_upd_stmt;
3798 
3799          FEM_ENGINES_PKG.TECH_MESSAGE
3800           (p_severity => c_log_level_1,
3801            p_module => v_block||'.v_eng_call{620.15}',
3802            p_msg_text => v_eng_call);
3803 
3804          EXECUTE IMMEDIATE v_eng_call
3805          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3806                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3807                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3808                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3809                t_arg(13),t_arg(14),t_arg(15),
3810                p_req_id,v_slc_id;
3811 
3812       ELSIF (v_args_count = 16)
3813       THEN
3814          v_eng_call := v_eng_call||','||
3815             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3816             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3817             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3818             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16);'||
3819          v_upd_stmt;
3820 
3821          FEM_ENGINES_PKG.TECH_MESSAGE
3822           (p_severity => c_log_level_1,
3823            p_module => v_block||'.v_eng_call{620.16}',
3824            p_msg_text => v_eng_call);
3825 
3826          EXECUTE IMMEDIATE v_eng_call
3827          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3828                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3829                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3830                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3831                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3832                p_req_id,v_slc_id;
3833 
3834       ELSIF (v_args_count = 17)
3835       THEN
3836          v_eng_call := v_eng_call||','||
3837             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3838             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3839             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3840             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3841             ' :b_arg17);'||
3842          v_upd_stmt;
3843 
3844          FEM_ENGINES_PKG.TECH_MESSAGE
3845           (p_severity => c_log_level_1,
3846            p_module => v_block||'.v_eng_call{620.17}',
3847            p_msg_text => v_eng_call);
3848 
3849          EXECUTE IMMEDIATE v_eng_call
3850          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3851                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3852                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3853                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3854                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3855                t_arg(17),
3856                p_req_id,v_slc_id;
3857 
3858       ELSIF (v_args_count = 18)
3859       THEN
3860          v_eng_call := v_eng_call||','||
3861             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3862             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3863             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3864             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3865             ' :b_arg17,:b_arg18);'||
3866          v_upd_stmt;
3867 
3871            p_msg_text => v_eng_call);
3868          FEM_ENGINES_PKG.TECH_MESSAGE
3869           (p_severity => c_log_level_1,
3870            p_module => v_block||'.v_eng_call{620.18}',
3872 
3873          EXECUTE IMMEDIATE v_eng_call
3874          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3875                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3876                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3877                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3878                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3879                t_arg(17),t_arg(18),
3880                p_req_id,v_slc_id;
3881 
3882       ELSIF (v_args_count = 19)
3883       THEN
3884          v_eng_call := v_eng_call||','||
3885             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3886             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3887             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3888             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3889             ' :b_arg17,:b_arg18,:b_arg19);'||
3890          v_upd_stmt;
3891 
3892          FEM_ENGINES_PKG.TECH_MESSAGE
3893           (p_severity => c_log_level_1,
3894            p_module => v_block||'.v_eng_call{620.19}',
3895            p_msg_text => v_eng_call);
3896 
3897          EXECUTE IMMEDIATE v_eng_call
3898          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3899                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3900                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3901                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3902                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3903                t_arg(17),t_arg(18),t_arg(19),
3904                p_req_id,v_slc_id;
3905 
3906       ELSIF (v_args_count = 20)
3907       THEN
3908          v_eng_call := v_eng_call||','||
3909             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3910             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3911             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3912             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3913             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20);'||
3914          v_upd_stmt;
3915 
3916          FEM_ENGINES_PKG.TECH_MESSAGE
3917           (p_severity => c_log_level_1,
3918            p_module => v_block||'.v_eng_call{620.20}',
3919            p_msg_text => v_eng_call);
3920 
3921          EXECUTE IMMEDIATE v_eng_call
3922          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3923                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3924                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3925                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3926                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3927                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3928                p_req_id,v_slc_id;
3929 
3930       ELSIF (v_args_count = 21)
3931       THEN
3932          v_eng_call := v_eng_call||','||
3933             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3934             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3935             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3936             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3937             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3938             ' :b_arg21);'||
3939          v_upd_stmt;
3940 
3941          FEM_ENGINES_PKG.TECH_MESSAGE
3942           (p_severity => c_log_level_1,
3943            p_module => v_block||'.v_eng_call{620.21}',
3944            p_msg_text => v_eng_call);
3945 
3946          EXECUTE IMMEDIATE v_eng_call
3947          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3948                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3949                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3950                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3951                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3952                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3953                t_arg(21),
3954                p_req_id,v_slc_id;
3955 
3956       ELSIF (v_args_count = 22)
3957       THEN
3958          v_eng_call := v_eng_call||','||
3959             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3960             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3961             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3962             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3963             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3964             ' :b_arg21,:b_arg22);'||
3965          v_upd_stmt;
3966 
3967          FEM_ENGINES_PKG.TECH_MESSAGE
3968           (p_severity => c_log_level_1,
3969            p_module => v_block||'.v_eng_call{620.22}',
3970            p_msg_text => v_eng_call);
3971 
3972          EXECUTE IMMEDIATE v_eng_call
3973          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
3974                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
3975                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
3976                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
3977                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
3978                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
3979                t_arg(21),t_arg(22),
3980                p_req_id,v_slc_id;
3981 
3982       ELSIF (v_args_count = 23)
3983       THEN
3984          v_eng_call := v_eng_call||','||
3985             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
3986             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
3987             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
3988             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
3989             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
3993          FEM_ENGINES_PKG.TECH_MESSAGE
3990             ' :b_arg21,:b_arg22,:b_arg23);'||
3991          v_upd_stmt;
3992 
3994           (p_severity => c_log_level_1,
3995            p_module => v_block||'.v_eng_call{620.23}',
3996            p_msg_text => v_eng_call);
3997 
3998          EXECUTE IMMEDIATE v_eng_call
3999          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4000                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4001                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4002                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4003                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4004                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4005                t_arg(21),t_arg(22),t_arg(23),
4006                p_req_id,v_slc_id;
4007 
4008       ELSIF (v_args_count = 24)
4009       THEN
4010          v_eng_call := v_eng_call||','||
4011             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4012             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4013             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4014             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4015             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4016             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24);'||
4017          v_upd_stmt;
4018 
4019          FEM_ENGINES_PKG.TECH_MESSAGE
4020           (p_severity => c_log_level_1,
4021            p_module => v_block||'.v_eng_call{620.24}',
4022            p_msg_text => v_eng_call);
4023 
4024          EXECUTE IMMEDIATE v_eng_call
4025          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4026                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4027                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4028                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4029                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4030                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4031                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4032                p_req_id,v_slc_id;
4033 
4034       ELSIF (v_args_count = 25)
4035       THEN
4036          v_eng_call := v_eng_call||','||
4037             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4038             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4039             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4040             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4041             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4042             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4043             ' :b_arg25);'||
4044          v_upd_stmt;
4045 
4046          FEM_ENGINES_PKG.TECH_MESSAGE
4047           (p_severity => c_log_level_1,
4048            p_module => v_block||'.v_eng_call{620.25}',
4049            p_msg_text => v_eng_call);
4050 
4051          EXECUTE IMMEDIATE v_eng_call
4052          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4053                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4054                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4055                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4056                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4057                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4058                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4059                t_arg(25),
4060                p_req_id,v_slc_id;
4061 
4062       ELSIF (v_args_count = 26)
4063       THEN
4064          v_eng_call := v_eng_call||','||
4065             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4066             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4067             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4068             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4069             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4070             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4071             ' :b_arg25,:b_arg26);'||
4072          v_upd_stmt;
4073 
4074          FEM_ENGINES_PKG.TECH_MESSAGE
4075           (p_severity => c_log_level_1,
4076            p_module => v_block||'.v_eng_call{620.26}',
4077            p_msg_text => v_eng_call);
4078 
4079          EXECUTE IMMEDIATE v_eng_call
4080          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4081                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4082                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4083                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4084                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4085                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4086                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4087                t_arg(25),t_arg(26),
4088                p_req_id,v_slc_id;
4089 
4090       ELSIF (v_args_count = 27)
4091       THEN
4092          v_eng_call := v_eng_call||','||
4093             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4094             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4095             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4096             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4097             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4098             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4099             ' :b_arg25,:b_arg26,:b_arg27);'||
4100          v_upd_stmt;
4101 
4102          FEM_ENGINES_PKG.TECH_MESSAGE
4103           (p_severity => c_log_level_1,
4104            p_module => v_block||'.v_eng_call{620.27}',
4105            p_msg_text => v_eng_call);
4106 
4107          EXECUTE IMMEDIATE v_eng_call
4108          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4109                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4113                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4110                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4111                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4112                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4114                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4115                t_arg(25),t_arg(26),t_arg(27),
4116                p_req_id,v_slc_id;
4117 
4118       ELSIF (v_args_count = 28)
4119       THEN
4120          v_eng_call := v_eng_call||','||
4121             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4122             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4123             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4124             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4125             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4126             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4127             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28);'||
4128          v_upd_stmt;
4129 
4130          FEM_ENGINES_PKG.TECH_MESSAGE
4131           (p_severity => c_log_level_1,
4132            p_module => v_block||'.v_eng_call{620.28}',
4133            p_msg_text => v_eng_call);
4134 
4135          EXECUTE IMMEDIATE v_eng_call
4136          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4137                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4138                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4139                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4140                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4141                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4142                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4143                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4144                p_req_id,v_slc_id;
4145 
4146       ELSIF (v_args_count = 29)
4147       THEN
4148          v_eng_call := v_eng_call||','||
4149             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4150             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4151             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4152             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4153             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4154             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4155             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4156             ' :b_arg29);'||
4157          v_upd_stmt;
4158 
4159          FEM_ENGINES_PKG.TECH_MESSAGE
4160           (p_severity => c_log_level_1,
4161            p_module => v_block||'.v_eng_call{620.29}',
4162            p_msg_text => v_eng_call);
4163 
4164          EXECUTE IMMEDIATE v_eng_call
4165          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4166                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4167                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4168                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4169                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4170                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4171                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4172                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4173                t_arg(29),
4174                p_req_id,v_slc_id;
4175 
4176       ELSIF (v_args_count = 30)
4177       THEN
4178          v_eng_call := v_eng_call||','||
4179             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4180             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4181             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4182             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4183             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4184             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4185             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4186             ' :b_arg29,:b_arg30);'||
4187          v_upd_stmt;
4188 
4189          FEM_ENGINES_PKG.TECH_MESSAGE
4190           (p_severity => c_log_level_1,
4191            p_module => v_block2||'.v_eng_call{642.30}',
4192            p_msg_text => v_eng_call);
4193 
4194          EXECUTE IMMEDIATE v_eng_call
4195          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4196                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4197                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4198                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4199                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4200                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4201                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4202                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4203                t_arg(29),t_arg(30),
4204                p_req_id,v_slc_id;
4205 
4206       ELSIF (v_args_count = 31)
4207       THEN
4208          v_eng_call := v_eng_call||','||
4209             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4210             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4211             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4212             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4213             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4214             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4215             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4216             ' :b_arg29,:b_arg30,:b_arg31);'||
4217          v_upd_stmt;
4218 
4219          FEM_ENGINES_PKG.TECH_MESSAGE
4220           (p_severity => c_log_level_1,
4221            p_module => v_block||'.v_eng_call{620.31}',
4222            p_msg_text => v_eng_call);
4223 
4224          EXECUTE IMMEDIATE v_eng_call
4225          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4226                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4230                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4227                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4228                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4229                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4231                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4232                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4233                t_arg(29),t_arg(30),t_arg(31),
4234                p_req_id,v_slc_id;
4235 
4236       ELSIF (v_args_count = 32)
4237       THEN
4238          v_eng_call := v_eng_call||','||
4239             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4240             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4241             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4242             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4243             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4244             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4245             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4246             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32);'||
4247          v_upd_stmt;
4248 
4249          FEM_ENGINES_PKG.TECH_MESSAGE
4250           (p_severity => c_log_level_1,
4251            p_module => v_block||'.v_eng_call{620.32}',
4252            p_msg_text => v_eng_call);
4253 
4254          EXECUTE IMMEDIATE v_eng_call
4255          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4256                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4257                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4258                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4259                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4260                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4261                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4262                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4263                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4264                p_req_id,v_slc_id;
4265 
4266       ELSIF (v_args_count = 33)
4267       THEN
4268          v_eng_call := v_eng_call||','||
4269             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4270             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4271             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4272             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4273             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4274             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4275             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4276             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4277             ' :b_arg33);'||
4278          v_upd_stmt;
4279 
4280          FEM_ENGINES_PKG.TECH_MESSAGE
4281           (p_severity => c_log_level_1,
4282            p_module => v_block||'.v_eng_call{620.33}',
4283            p_msg_text => v_eng_call);
4284 
4285          EXECUTE IMMEDIATE v_eng_call
4286          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4287                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4288                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4289                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4290                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4291                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4292                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4293                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4294                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4295                t_arg(33),
4296                p_req_id,v_slc_id;
4297 
4298       ELSIF (v_args_count = 34)
4299       THEN
4300          v_eng_call := v_eng_call||','||
4301             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4302             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4303             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4304             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4305             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4306             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4307             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4308             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4309             ' :b_arg33,:b_arg34);'||
4310          v_upd_stmt;
4311 
4312          FEM_ENGINES_PKG.TECH_MESSAGE
4313           (p_severity => c_log_level_1,
4314            p_module => v_block||'.v_eng_call{620.34}',
4315            p_msg_text => v_eng_call);
4316 
4317          EXECUTE IMMEDIATE v_eng_call
4318          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4319                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4320                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4321                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4322                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4323                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4324                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4325                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4326                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4327                t_arg(33),t_arg(34),
4328                p_req_id,v_slc_id;
4329 
4330       ELSIF (v_args_count = 35)
4331       THEN
4332          v_eng_call := v_eng_call||','||
4333             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4334             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4335             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4336             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4337             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4338             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4339             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4340             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4341             ' :b_arg33,:b_arg34,:b_arg35);'||
4342          v_upd_stmt;
4343 
4347            p_msg_text => v_eng_call);
4344          FEM_ENGINES_PKG.TECH_MESSAGE
4345           (p_severity => c_log_level_1,
4346            p_module => v_block||'.v_eng_call{620.35}',
4348 
4349          EXECUTE IMMEDIATE v_eng_call
4350          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4351                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4352                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4353                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4354                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4355                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4356                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4357                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4358                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4359                t_arg(33),t_arg(34),t_arg(35),
4360                p_req_id,v_slc_id;
4361 
4362       ELSIF (v_args_count = 36)
4363       THEN
4364          v_eng_call := v_eng_call||','||
4365             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4366             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4367             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4368             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4369             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4370             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4371             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4372             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4373             ' :b_arg33,:b_arg34,:b_arg35,:b_arg36);'||
4374          v_upd_stmt;
4375 
4376          FEM_ENGINES_PKG.TECH_MESSAGE
4377           (p_severity => c_log_level_1,
4378            p_module => v_block||'.v_eng_call{620.36}',
4379            p_msg_text => v_eng_call);
4380 
4381          EXECUTE IMMEDIATE v_eng_call
4382          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4383                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4384                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4385                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4386                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4387                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4388                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4389                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4390                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4391                t_arg(33),t_arg(34),t_arg(35),t_arg(36),
4392                p_req_id,v_slc_id;
4393 
4394       ELSIF (v_args_count = 37)
4395       THEN
4396          v_eng_call := v_eng_call||','||
4397             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4398             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4399             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4400             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4401             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4402             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4403             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4404             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4405             ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
4406             ' :b_arg37);'||
4407          v_upd_stmt;
4408 
4409          FEM_ENGINES_PKG.TECH_MESSAGE
4410           (p_severity => c_log_level_1,
4411            p_module => v_block||'.v_eng_call{620.37}',
4412            p_msg_text => v_eng_call);
4413 
4414          EXECUTE IMMEDIATE v_eng_call
4415          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4416                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4417                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4418                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4419                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4420                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4421                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4422                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4423                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4424                t_arg(33),t_arg(34),t_arg(35),t_arg(36),
4425                t_arg(37),
4426                p_req_id,v_slc_id;
4427 
4428       ELSIF (v_args_count = 38)
4429       THEN
4430          v_eng_call := v_eng_call||','||
4431             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4432             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4433             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4434             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4435             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4436             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4437             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4438             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4439             ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
4440             ' :b_arg37,:b_arg38);'||
4441          v_upd_stmt;
4442 
4443          FEM_ENGINES_PKG.TECH_MESSAGE
4444           (p_severity => c_log_level_1,
4445            p_module => v_block||'.v_eng_call{620.38}',
4446            p_msg_text => v_eng_call);
4447 
4448          EXECUTE IMMEDIATE v_eng_call
4449          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4450                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4451                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4452                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4453                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4454                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4455                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4456                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4457                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4461 
4458                t_arg(33),t_arg(34),t_arg(35),t_arg(36),
4459                t_arg(37),t_arg(38),
4460                p_req_id,v_slc_id;
4462       ELSIF (v_args_count = 39)
4463       THEN
4464          v_eng_call := v_eng_call||','||
4465             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4466             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4467             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4468             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4469             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4470             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4471             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4472             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4473             ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
4474             ' :b_arg37,:b_arg38,:b_arg39);'||
4475          v_upd_stmt;
4476 
4477          FEM_ENGINES_PKG.TECH_MESSAGE
4478           (p_severity => c_log_level_1,
4479            p_module => v_block||'.v_eng_call{620.39}',
4480            p_msg_text => v_eng_call);
4481 
4482          EXECUTE IMMEDIATE v_eng_call
4483          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4484                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4485                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4486                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4487                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4488                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4489                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4490                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4491                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4492                t_arg(33),t_arg(34),t_arg(35),t_arg(36),
4493                t_arg(37),t_arg(38),t_arg(39),
4494                p_req_id,v_slc_id;
4495 
4496       ELSIF (v_args_count = 40)
4497       THEN
4498          v_eng_call := v_eng_call||','||
4499             ' :b_arg1, :b_arg2, :b_arg3, :b_arg4,'||
4500             ' :b_arg5, :b_arg6, :b_arg7, :b_arg8,'||
4501             ' :b_arg9, :b_arg10,:b_arg11,:b_arg12,'||
4502             ' :b_arg13,:b_arg14,:b_arg15,:b_arg16,'||
4503             ' :b_arg17,:b_arg18,:b_arg19,:b_arg20,'||
4504             ' :b_arg21,:b_arg22,:b_arg23,:b_arg24,'||
4505             ' :b_arg25,:b_arg26,:b_arg27,:b_arg28,'||
4506             ' :b_arg29,:b_arg30,:b_arg31,:b_arg32,'||
4507             ' :b_arg33,:b_arg34,:b_arg35,:b_arg36,'||
4508             ' :b_arg37,:b_arg38,:b_arg39,:b_arg40);'||
4509          v_upd_stmt;
4510 
4511          FEM_ENGINES_PKG.TECH_MESSAGE
4512           (p_severity => c_log_level_1,
4513            p_module => v_block||'.v_eng_call{620.40}',
4514            p_msg_text => v_eng_call);
4515 
4516          EXECUTE IMMEDIATE v_eng_call
4517          USING v_eng_sql,p_proc_num,v_slc_id,p_fetch_limit,
4518                t_arg(1), t_arg(2), t_arg(3), t_arg(4),
4519                t_arg(5), t_arg(6), t_arg(7), t_arg(8),
4520                t_arg(9), t_arg(10),t_arg(11),t_arg(12),
4521                t_arg(13),t_arg(14),t_arg(15),t_arg(16),
4522                t_arg(17),t_arg(18),t_arg(19),t_arg(20),
4523                t_arg(21),t_arg(22),t_arg(23),t_arg(24),
4524                t_arg(25),t_arg(26),t_arg(27),t_arg(28),
4525                t_arg(29),t_arg(30),t_arg(31),t_arg(32),
4526                t_arg(33),t_arg(34),t_arg(35),t_arg(36),
4527                t_arg(37),t_arg(38),t_arg(39),t_arg(40),
4528                p_req_id,v_slc_id;
4529 
4530       END IF;
4531 
4532       SELECT status,message
4533       INTO v_slc_stat,v_slc_msg
4534       FROM fem_mp_process_ctl_t
4535       WHERE req_id = p_req_id
4536       AND slice_id = v_slc_id;
4537 
4538    END IF; -- Push Processing
4539 
4540    IF (v_num_vals > 0 AND p_mp_method = 1)
4541    THEN
4542    /*----------------------------------------------------------------------
4543 
4544                            Pull Processing
4545 
4546    ----------------------------------------------------------------------*/
4547 
4548       FEM_ENGINES_PKG.TECH_MESSAGE
4549        (p_severity => c_log_level_2,
4550         p_module => v_block2||'.Engine_Pull{650}',
4551         p_msg_text => 'Data slice pulled by MP Subrequest for processing');
4552 
4553       v_eng_sql := REPLACE(v_eng_sql,'{{data_slice}}',v_slc_pred);
4554 
4555       FEM_ENGINES_PKG.TECH_MESSAGE
4556        (p_severity => c_log_level_2,
4557         p_module => v_block2||'.v_eng_sql{651}',
4558         p_msg_text => v_eng_sql);
4559 
4560       BEGIN
4561          v_slc_stat := 0;
4562          v_slc_msg := 'Data slice processed normally by MP Subrequest';
4563 
4564       IF (v_num_vals = 4)
4565       THEN
4566          EXECUTE IMMEDIATE v_eng_sql
4567          USING v_slc_val1,v_slc_val2,v_slc_val3,
4568                v_slc_val4;
4569          v_rows_processed := SQL%ROWCOUNT;
4570       ELSIF (v_num_vals = 3)
4571       THEN
4572          EXECUTE IMMEDIATE v_eng_sql
4573          USING v_slc_val1,v_slc_val2,v_slc_val3;
4574          v_rows_processed := SQL%ROWCOUNT;
4575       ELSIF (v_num_vals = 2)
4576       THEN
4577          EXECUTE IMMEDIATE v_eng_sql
4578          USING v_slc_val1,v_slc_val2;
4579          v_rows_processed := SQL%ROWCOUNT;
4580       ELSIF (v_num_vals = 1)
4581       THEN
4582          EXECUTE IMMEDIATE v_eng_sql
4583          USING v_slc_val1;
4587       END IF;
4584          v_rows_processed := SQL%ROWCOUNT;
4585       ELSE
4586          EXIT;
4588 
4589       EXCEPTION
4590          WHEN others THEN
4591             v_slc_stat := 2;
4592             v_slc_msg  := sqlerrm;
4593       END;
4594 
4595       UPDATE fem_mp_process_ctl_t
4596       SET status = v_slc_stat,
4597           message = v_slc_msg,
4598           rows_processed = v_rows_processed
4599       WHERE req_id = p_req_id
4600         AND slice_id = v_slc_id;
4601 
4602       COMMIT;
4603 
4604    END IF; -- Pull Processing
4605 
4606    ------------------------------
4607    -- Check for completion status
4608    ------------------------------
4609    FEM_ENGINES_PKG.TECH_MESSAGE
4610     (p_severity => c_log_level_2,
4611      p_module => v_block2||'.slc_status{660}',
4612      p_msg_text => v_slc_stat||':'||v_slc_msg);
4613 
4614    CASE v_slc_stat
4615       WHEN 2 THEN EXIT;
4616       ELSE null;
4617    END CASE;
4618 
4619 END LOOP;
4620 
4621 END IF;
4622 
4623 ------------------------------------------
4624 -- Post messages and set Concurrent status
4625 ------------------------------------------
4626 SELECT MAX(status)
4627 INTO v_sub_stat
4628 FROM fem_mp_process_ctl_t
4629 WHERE req_id = p_req_id
4630   AND process_num = p_proc_num;
4631 
4632 FEM_ENGINES_PKG.TECH_MESSAGE
4633  (p_severity => c_log_level_2,
4634   p_module => v_block||'.v_sub_stat{661}',
4635   p_msg_text => v_sub_stat);
4636 
4637 IF (v_sub_stat IS NULL)
4638 THEN
4639    v_sub_stat := 0;
4640    FEM_ENGINES_PKG.TECH_MESSAGE
4641     (p_severity => c_log_level_2,
4642      p_module => v_block||'.v_sub_msg{662}',
4643      p_msg_text => 'Sub-request found no data slices to process');
4644 END IF;
4645 
4646 IF (v_sub_stat = 0)
4647 THEN
4648    FEM_ENGINES_PKG.PUT_MESSAGE
4649     (p_app_name => 'FEM',
4650      p_msg_name => 'FEM_MP_SUB_NORMAL_TXT',
4651      p_token1 => 'PARENT_REQ',
4652      p_value1 => p_req_id,
4653      p_token2 => 'REQUEST',
4654      p_value2 => v_sub_req_id);
4655 
4656    v_sub_msg := FND_MSG_PUB.GET(p_encoded => 'F');
4657 
4658 ELSIF (v_sub_stat = 1)
4659 THEN
4660    FEM_ENGINES_PKG.PUT_MESSAGE
4661     (p_app_name => 'FEM',
4662      p_msg_name => 'FEM_MP_SUB_WARN_TXT',
4663      p_token1 => 'PARENT_REQ',
4664      p_value1 => p_req_id,
4665      p_token2 => 'REQUEST',
4666      p_value2 => v_sub_req_id);
4667 
4668    v_sub_msg := FND_MSG_PUB.GET(p_encoded => 'F');
4669    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('WARNING',null);
4670 
4671 ELSE
4672    FEM_ENGINES_PKG.PUT_MESSAGE(
4673      p_app_name => 'FEM',
4674      p_msg_name => 'FEM_MP_SUB_ENG_ERR',
4675      p_token1 => 'PARENT_REQ',
4676      p_value1 => p_req_id,
4677      p_token2 => 'REQUEST',
4678      p_value2 => v_sub_req_id);
4679 
4680    v_sub_msg := FND_MSG_PUB.GET(p_encoded => 'F');
4681    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
4682 
4683 END IF;
4684 
4685 FEM_ENGINES_PKG.TECH_MESSAGE
4686  (p_severity => c_log_level_2,
4687   p_module => v_block||'.v_sub_msg{663}',
4688   p_msg_text => v_sub_msg);
4689 FEM_ENGINES_PKG.USER_MESSAGE(
4690  p_msg_text => v_sub_msg);
4691 
4692 /*=========================================================================
4693 
4694                      Sub-Request: Exception Block
4695 
4696  =========================================================================*/
4697 
4698 EXCEPTION
4699 
4700 WHEN e_soft_kill THEN
4701    FEM_ENGINES_PKG.PUT_MESSAGE(
4702      p_app_name => 'FEM',
4703      p_msg_name => 'FEM_MP_SOFT_KILL_WARN',
4704      p_token1 => 'REQUEST',
4705      p_value1 => v_sub_req_id);
4706 
4707    v_sub_msg := FND_MSG_PUB.GET(p_encoded => 'F');
4708 
4709    FEM_ENGINES_PKG.TECH_MESSAGE(
4710      p_severity => c_log_level_5,
4711      p_module => v_block||'.soft_kill_signal{664}',
4712      p_msg_text => v_sub_msg);
4713    FEM_ENGINES_PKG.USER_MESSAGE(
4714     p_msg_text => v_sub_msg);
4715 
4716    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
4717 
4718 WHEN others THEN
4719    v_stack := dbms_utility.format_call_stack;
4720 
4721    FEM_ENGINES_PKG.PUT_MESSAGE(
4722      p_app_name => 'FEM',
4723      p_msg_name => 'FEM_MP_SUB_UNEXP_ERR',
4724      p_token1 => 'PARENT_REQ',
4725      p_value1 => p_req_id,
4726      p_token2 => 'REQUEST',
4727      p_value2 => v_sub_req_id,
4728      p_token3 => 'SQLERRM',
4729      p_value3 => sqlerrm);
4730 
4731    v_sub_msg := FND_MSG_PUB.GET(p_encoded => 'F');
4732 
4733    FEM_ENGINES_PKG.TECH_MESSAGE
4734     (p_severity => c_log_level_6,
4735      p_module => v_block||'.exception{665}',
4736      p_msg_text => v_sub_msg||'
4737 '||v_stack);
4738    FEM_ENGINES_PKG.USER_MESSAGE(
4739     p_msg_text => v_sub_msg);
4740 
4741    f_set_status := FND_CONCURRENT.SET_COMPLETION_STATUS('ERROR',null);
4742 
4743 END Sub_Request;
4744 
4745 
4746 /**************************************************************************
4747  **************************************************************************
4751                          =============================
4748 
4749                          =============================
4750                                 Get Data Slice
4752 
4753  **************************************************************************
4754  **************************************************************************/
4755 
4756 PROCEDURE Get_Data_Slice
4757 
4758   (x_slc_id       OUT     NOCOPY NUMBER,
4759    x_slc_val1     OUT     NOCOPY VARCHAR2,
4760    x_slc_val2     OUT     NOCOPY VARCHAR2,
4761    x_slc_val3     OUT     NOCOPY VARCHAR2,
4762    x_slc_val4     OUT     NOCOPY VARCHAR2,
4763    x_num_vals     OUT     NOCOPY NUMBER,
4764    x_part_name    OUT     NOCOPY VARCHAR2,
4765    p_req_id       IN      NUMBER,
4766    p_proc_num     IN      NUMBER)
4767 
4768 IS
4769 
4770    f_set_status             BOOLEAN;
4771 
4772    v_kill_signal            NUMBER;
4773    v_part_count             NUMBER;
4774    v_slc_id                 NUMBER;
4775    v_proc_num0              NUMBER;
4776    v_slc_stat               NUMBER;
4777    v_rows_processed         NUMBER;
4778    v_rows_loaded            NUMBER;
4779    v_rows_rejected          NUMBER;
4780    v_rule_id                NUMBER;
4781    v_slc_beg                NUMBER;
4782    v_slc_len                NUMBER;
4783    v_slc_num                NUMBER;
4784 
4785    v_args_count             NUMBER;
4786    v_data_slc               VARCHAR2(2000);
4787    v_eng_prg                VARCHAR2(80);
4788    v_eng_prms               VARCHAR2(32767);
4789    v_part_name              VARCHAR2(30);
4790    v_part_next              VARCHAR2(30);
4791    v_slc_msg                VARCHAR2(4000);
4792    v_slc_pred               VARCHAR2(32767);
4793    v_slc_pred1              VARCHAR2(32767);
4794    v_slc_pred2              VARCHAR2(32767);
4795 
4796    v_stack                  VARCHAR2(32767);
4797    v_trace                  VARCHAR2(255);
4798 
4799    v_sub_msg                VARCHAR2(4000);
4800    v_sub_req_id             NUMBER := fnd_global.conc_request_id;
4801 
4802    v_block                  VARCHAR2(80) := 'fem.plsql.fem_mp.get_data_slice'||
4803                                             '{p'||p_proc_num||'}';
4804    v_block2                 VARCHAR2(80);
4805 
4806    v_sql_cmd                VARCHAR2(32767);
4807 
4808    v_data_item              VARCHAR2(240);
4809 
4810 BEGIN
4811 
4812 /*------------------------------------------------------------------------
4813 
4814                           Get partition count
4815 
4816  -------------------------------------------------------------------------*/
4817 
4818 SELECT COUNT(DISTINCT partition)
4819 INTO v_part_count
4820 FROM fem_mp_process_ctl_t
4821 WHERE req_id = p_req_id;
4822 
4823 FEM_ENGINES_PKG.TECH_MESSAGE
4824  (p_severity => c_log_level_2,
4825   p_module => v_block||'.v_part_count{670}',
4826   p_msg_text => v_part_count);
4827 
4828 IF v_part_count = 0
4829 THEN
4830    v_part_name := null;
4831 ELSE
4832    v_part_name := 'DUMMY';
4833 END IF;
4834 
4835 /*------------------------------------------------------------------------
4836 
4837   Get and process a data slice until all data slices have been processed
4838 
4839  -------------------------------------------------------------------------*/
4840 
4841 ------------------------
4842 -- Check for Kill signal (this feature is not implemented yet)
4843 ------------------------
4844 v_kill_signal := 0;
4845 
4846 CASE v_kill_signal
4847    WHEN 1 THEN RAISE e_soft_kill;
4848    ELSE null;
4849 END CASE;
4850 
4851 FEM_ENGINES_PKG.TECH_MESSAGE
4852  (p_severity => c_log_level_2,
4853   p_module => v_block||'.Get_Slice{671}',
4854   p_msg_text => 'Getting slice to process. '||
4855                    'Log entry will appear as (p'||p_proc_num||':sN)');
4856 
4857 IF (v_part_count = 0)
4858 THEN
4859 /*---------------------------------------------------------------------
4860 
4861                  Partition slicing is DISabled
4862 
4863 ---------------------------------------------------------------------*/
4864 
4865    -- ------------------------------------------------------------------------------------------
4866    -- Identify next UNprocessed slice
4867    -- Bug# 5709246 (Greg Hall)
4868    -- Note that while it appears that process_num is selected into v_proc_num0 for now apparent
4869    -- use, it is in fact needed, as explained here:
4870    -- ------------------------------------------------------------------------------------------
4871    -- Suppose process P1 selects data slice 3 "for update", and then process P2 immediately
4872    -- executes its query before P1 can update it with its own process number and commit the
4873    -- change, so the optimizer identifies the same row that P1 has locked.  Since P1 has a lock
4874    -- on the row, and P2 also wants the row "for update" it is made to wait. After P1 updates
4875    -- the row and commits the change, the row lock is released.  When only SLICE_ID is
4876    -- selected, the optimizer, which has already identified the desired row, returns it as the
4877    -- result of P2's query. P1 proceeds to process slice 3, while P2 updates slice 3 with its
4878    -- process number, commits the change, an proceeds to also process slice 3.  Apparently
4882    -- been changed since the row was originally requested, so it re-executes the query to
4879    -- since only SLICE_ID was selected, and that column has not changed since the row was
4880    -- originally requested, the optimizer returns that same row.  But when PROCESS_NUM is
4881    -- also selected, apparently the optimizer recognizes that the value of PROCESS_NUM has
4883    -- retrieve the updated value of PROCESS_NUM, and the re-execution of the query now
4884    -- identifies and returns a different row (slice 4, the correct one).  With this behavior,
4885    -- no loop is actually needed, but as this behavior does not seem to be a documented feature,
4886    -- it is susceptible to change.  To be on the safe side, instead of relying on that behavior
4887    -- a loop is included anyway.  My unit tests showed that in every case, the loop exited on
4888    -- the first pass.
4889    -- Note that this code section is repeated below for the partition section of the procedure.
4890    -- ------------------------------------------------------------------------------------------
4891    BEGIN
4892 
4893       COMMIT;
4894 
4895       LOOP
4896 
4897          SELECT slice_id, process_num
4898          INTO v_slc_id, v_proc_num0
4899          FROM fem_mp_process_ctl_t
4900          WHERE req_id = p_req_id
4901            AND slice_id =
4902               (SELECT MIN(slice_id)
4903                FROM fem_mp_process_ctl_t
4904                WHERE req_id = p_req_id
4905                  AND process_num = 0)
4906          FOR UPDATE;
4907 
4908          IF v_proc_num0 = 0 THEN
4909             EXIT;
4910          ELSE
4911             ROLLBACK;
4912          END IF;
4913 
4914       END LOOP;
4915 
4916       UPDATE fem_mp_process_ctl_t
4917       SET process_num = p_proc_num
4918       WHERE req_id = p_req_id
4919         AND slice_id = v_slc_id;
4920 
4921       COMMIT;
4922 
4923    EXCEPTION
4924       WHEN no_data_found THEN
4925          FEM_ENGINES_PKG.TECH_MESSAGE
4926           (p_severity => c_log_level_3,
4927            p_module => v_block||'.End{699}',
4928            p_msg_text => 'End FEM_MP.SUBREQ. No more slices to process');
4929          RETURN;
4930    END;
4931 
4932 END IF;
4933 
4934 IF (v_part_count > 0)
4935 THEN
4936 /*---------------------------------------------------------------------
4937 
4938                  Partition slicing is enabled
4939 
4940    Select a partition using the following order of precedence:
4941     1. Previously used partition:
4942           If a partition has alredy been used, select it
4943           again if there are still unprocessed slices
4944     2. Next unprocessed partition
4945     3. Least processed partition
4946 ------------------------------------------------------------*/
4947 
4948    ----------------------------
4949    -- Previously used partition
4950    ----------------------------
4951 
4952    IF (p_proc_num <= v_part_count)
4953    THEN
4954       FEM_ENGINES_PKG.TECH_MESSAGE
4955        (p_severity => c_log_level_2,
4956         p_module => v_block||'.Get_Slice{680}',
4957         p_msg_text => 'Searching previously used partition');
4958       BEGIN
4959          SELECT MIN(partition)
4960          INTO v_part_next
4961          FROM fem_mp_process_ctl_t
4962          WHERE req_id = p_req_id
4963            AND process_num = p_proc_num
4964            AND partition IN
4965               (SELECT partition
4966                FROM fem_mp_process_ctl_t
4967                WHERE req_id = p_req_id
4968                AND process_num = 0);
4969       END;
4970    ELSE
4971       v_part_next := '';
4972    END IF;
4973 
4974    -----------------------------
4975    -- Next unprocessed partition
4976    -----------------------------
4977 
4978    IF (v_part_next IS NULL)
4979    THEN
4980       FEM_ENGINES_PKG.TECH_MESSAGE
4981        (p_severity => c_log_level_2,
4982         p_module => v_block||'.Get_Slice{681}',
4983         p_msg_text => 'Searching next unprocessed partition');
4984       BEGIN
4985          SELECT MIN(partition)
4986          INTO v_part_next
4987          FROM fem_mp_process_ctl_t
4988          WHERE req_id = p_req_id
4989            AND partition NOT IN
4990               (SELECT partition
4991                FROM fem_mp_process_ctl_t
4992                WHERE req_id = p_req_id
4993                AND process_num > 0);
4994       END;
4995    END IF;
4996 
4997    -----------------------------
4998    -- Least processed partition
4999    -----------------------------
5000 
5001    IF (v_part_next IS NULL)
5002    THEN
5003       FEM_ENGINES_PKG.TECH_MESSAGE
5004        (p_severity => c_log_level_2,
5005         p_module => v_block||'.Get_Slice{682}',
5006         p_msg_text => 'Searching least processed partition');
5007       BEGIN
5008          SELECT MIN(partition)
5009          INTO v_part_next
5010          FROM
5011            (SELECT partition, count(*) stat_0
5012             FROM fem_mp_process_ctl_t
5013             WHERE req_id = p_req_id
5014               AND process_num = 0
5015             GROUP BY partition)
5016          WHERE stat_0 =
5017            (SELECT max(stat_0) FROM
5018               (SELECT count(*) stat_0
5019                FROM fem_mp_process_ctl_t
5020                WHERE req_id = p_req_id
5024    END IF;
5021                  AND process_num = 0
5022                GROUP BY partition));
5023       END;
5025 
5026    --------------------------------------------------------
5027    -- Identify next unprocessed slice in selected partition
5028    -- See explanation above for bug# 5709246 re: why
5029    -- it is required to select process_num in this query.
5030    --------------------------------------------------------
5031    BEGIN
5032 
5033       COMMIT;
5034 
5035       LOOP
5036 
5037          SELECT slice_id, process_num
5038          INTO v_slc_id, v_proc_num0
5039          FROM fem_mp_process_ctl_t
5040          WHERE req_id = p_req_id
5041            AND slice_id =
5042               (SELECT MIN(slice_id)
5043                FROM fem_mp_process_ctl_t
5044                WHERE req_id = p_req_id
5045                  AND process_num = 0
5046                  AND partition = v_part_next)
5047          FOR UPDATE;
5048 
5049          IF v_proc_num0 = 0 THEN
5050             EXIT;
5051          ELSE
5052             ROLLBACK;
5053          END IF;
5054 
5055       END LOOP;
5056 
5057       UPDATE fem_mp_process_ctl_t
5058       SET process_num = p_proc_num
5059       WHERE req_id = p_req_id
5060         AND slice_id = v_slc_id;
5061 
5062       COMMIT;
5063 
5064    EXCEPTION
5065       WHEN no_data_found THEN
5066          FEM_ENGINES_PKG.TECH_MESSAGE
5067           (p_severity => c_log_level_3,
5068            p_module => v_block||'.End{699}',
5069            p_msg_text => 'End FEM_MP.SUBREQ. No more slices to process');
5070          RETURN;
5071    END;
5072 
5073    FEM_ENGINES_PKG.TECH_MESSAGE
5074     (c_log_level_2,v_block||'.v_part_name{683}',v_part_name);
5075    FEM_ENGINES_PKG.TECH_MESSAGE
5076     (c_log_level_2,v_block||'.v_part_next{684}',v_part_next);
5077 
5078    ------------------------------------
5079    -- Reset partition name if necessary
5080    ------------------------------------
5081    IF (v_part_next <> v_part_name)
5082    THEN
5083 
5084       FEM_ENGINES_PKG.TECH_MESSAGE
5085        (p_severity => c_log_level_2,
5086         p_module => v_block||'.v_part_reset{685}',
5087         p_msg_text => 'Resetting v_part_name to '||v_part_next);
5088 
5089       v_part_name := v_part_next;
5090 
5091    END IF;
5092 
5093 END IF;
5094 
5095 /*----------------------------------------------------------------------
5096 
5097                        Get identified slice
5098 
5099 ---------------------------------------------------------------------*/
5100 
5101 x_slc_id := v_slc_id;
5102 FEM_ENGINES_PKG.TECH_MESSAGE
5103  (p_severity => c_log_level_2,
5104   p_module => v_block||'.x_slc_id{690}',
5105   p_msg_text => x_slc_id);
5106 
5107 v_block2 := REPLACE(v_block,'}',':s'||v_slc_id||'}');
5108 
5109 x_part_name := v_part_name;
5110 FEM_ENGINES_PKG.TECH_MESSAGE
5111  (p_severity => c_log_level_2,
5112   p_module => v_block2||'.x_part_name{691}',
5113   p_msg_text => x_part_name);
5114 
5115 BEGIN
5116    SELECT data_slice
5117    INTO v_data_slc
5118    FROM fem_mp_process_ctl_t
5119    WHERE req_id = p_req_id
5120      AND slice_id = v_slc_id
5121      AND process_num = p_proc_num;
5122 EXCEPTION
5123    WHEN no_data_found THEN
5124       v_data_slc := null;
5125 END;
5126 
5127 FEM_ENGINES_PKG.TECH_MESSAGE
5128  (p_severity => c_log_level_2,
5129   p_module => v_block2||'.v_data_slc{692}',
5130   p_msg_text => v_data_slc);
5131 
5132 IF (v_data_slc IS NULL)
5133 THEN
5134    x_num_vals := 0;
5135 ELSE
5136    -------------------------
5137    -- Extract data slices --
5138    -------------------------
5139 
5140    v_slc_num := 1;
5141    v_slc_beg := 1;
5142 
5143    LOOP
5144       v_slc_len := INSTR(v_data_slc,'{#}',1,v_slc_num)-v_slc_beg;
5145 
5146       FEM_ENGINES_PKG.TECH_MESSAGE
5147        (p_severity => c_log_level_2,
5148         p_module => v_block2||'.v_slc_len(slc#'||v_slc_num||'){693}',
5149         p_msg_text => v_slc_len);
5150 
5151       IF (v_slc_len > 0)
5152       THEN
5153          v_data_item := SUBSTR(v_data_slc,v_slc_beg,v_slc_len);
5154       ELSIF (v_slc_len = 0)
5155       THEN
5156          v_data_item := null;
5157       ELSE
5158          v_data_item := SUBSTR(v_data_slc,v_slc_beg);
5159       END IF;
5160 
5161       CASE v_slc_num
5162          WHEN 1 THEN x_slc_val1 := v_data_item;
5163          WHEN 2 THEN x_slc_val2 := v_data_item;
5164          WHEN 3 THEN x_slc_val3 := v_data_item;
5165          WHEN 4 THEN x_slc_val4 := v_data_item;
5166       END CASE;
5167 
5168       EXIT WHEN (v_slc_len < 0);
5169       EXIT WHEN (v_slc_num = 4);
5170 
5171       v_slc_beg := INSTR(v_data_slc,'{#}',1,v_slc_num)+3;
5172       v_slc_num := v_slc_num + 1;
5173 
5174    END LOOP;
5175    x_num_vals := v_slc_num;
5176 
5177 END IF;
5178 
5179 FEM_ENGINES_PKG.TECH_MESSAGE
5180  (p_severity => c_log_level_2,
5181   p_module => v_block2||'.x_slc_val1{694.1}',
5182   p_msg_text => x_slc_val1);
5183 FEM_ENGINES_PKG.TECH_MESSAGE
5184  (p_severity => c_log_level_2,
5185   p_module => v_block2||'.x_slc_val2{694.2}',
5186   p_msg_text => x_slc_val2);
5190   p_msg_text => x_slc_val3);
5187 FEM_ENGINES_PKG.TECH_MESSAGE
5188  (p_severity => c_log_level_2,
5189   p_module => v_block2||'.x_slc_val3{694.3}',
5191 FEM_ENGINES_PKG.TECH_MESSAGE
5192  (p_severity => c_log_level_2,
5193   p_module => v_block2||'.x_slc_val4{694.4}',
5194   p_msg_text => x_slc_val4);
5195 
5196 END Get_Data_Slice;
5197 
5198 
5199 /**************************************************************************
5200  **************************************************************************
5201 
5202                       =============================
5203                             Post Data Slice
5204                       =============================
5205 
5206  **************************************************************************
5207  **************************************************************************/
5208 
5209 PROCEDURE Post_Data_Slice(
5210    p_req_id          IN  NUMBER,
5211    p_slc_id          IN  NUMBER,
5212    p_status          IN  NUMBER,
5213    p_message         IN  VARCHAR2 DEFAULT NULL,
5214    p_rows_processed  IN   NUMBER DEFAULT 0,
5215    p_rows_loaded     IN   NUMBER DEFAULT 0,
5216    p_rows_rejected   IN   NUMBER DEFAULT 0)
5217 IS
5218    v_block             VARCHAR2(80) := 'fem.plsql.fem_mp.post_data_slice';
5219    v_sql_cmd           VARCHAR2(32766);
5220 BEGIN
5221 
5222 FEM_ENGINES_PKG.TECH_MESSAGE
5223 (p_severity => c_log_level_2,
5224  p_module => v_block||'.p_req_id{700}',
5225  p_msg_text => p_req_id);
5226 FEM_ENGINES_PKG.TECH_MESSAGE
5227 (p_severity => c_log_level_2,
5228  p_module => v_block||'.p_slc_id{701}',
5229  p_msg_text => p_slc_id);
5230 FEM_ENGINES_PKG.TECH_MESSAGE
5231 (p_severity => c_log_level_2,
5232  p_module => v_block||'.p_status{702}',
5233  p_msg_text => p_status);
5234 FEM_ENGINES_PKG.TECH_MESSAGE
5235 (p_severity => c_log_level_2,
5236  p_module => v_block||'.p_message{703}',
5237  p_msg_text => p_message);
5238 FEM_ENGINES_PKG.TECH_MESSAGE
5239 (p_severity => c_log_level_2,
5240  p_module => v_block||'.p_rows_processed{704}',
5241  p_msg_text => p_rows_processed);
5242 FEM_ENGINES_PKG.TECH_MESSAGE
5243 (p_severity => c_log_level_2,
5244  p_module => v_block||'.p_rows_loaded{705}',
5245  p_msg_text => p_rows_loaded);
5246 FEM_ENGINES_PKG.TECH_MESSAGE
5247 (p_severity => c_log_level_2,
5248  p_module => v_block||'.p_rows_rejected{706}',
5249  p_msg_text => p_rows_rejected);
5250 
5251 FEM_ENGINES_PKG.TECH_MESSAGE
5252 (p_severity => c_log_level_2,
5253  p_module => v_block||'.v_sql_cmd{707}',
5254  p_msg_text => 'Updating FEM_MP_PROCESS_CTL_T.');
5255 
5256 UPDATE fem_mp_process_ctl_t
5257 SET rows_processed = p_rows_processed,
5258     rows_loaded = p_rows_loaded,
5259     rows_rejected = p_rows_rejected,
5260     status = p_status,
5261     message = p_message
5262 WHERE req_id = p_req_id
5263   AND slice_id = p_slc_id;
5264 
5265 COMMIT;
5266 
5267 END Post_Data_Slice;
5268 
5269 /**************************************************************************
5270  **************************************************************************
5271 
5272                       =============================
5273                             Post Subreq Messages
5274                       =============================
5275 
5276  **************************************************************************
5277  **************************************************************************/
5278 
5279 PROCEDURE Post_Subreq_Messages(
5280    p_req_id          IN  NUMBER)
5281 IS
5282    TYPE mp_message_type IS TABLE OF
5283       fem_mp_process_ctl_t.message%TYPE INDEX BY BINARY_INTEGER;
5284    v_msg_list   mp_message_type;
5285 BEGIN
5286    SELECT DISTINCT(message)
5287    BULK COLLECT INTO v_msg_list
5288    FROM fem_mp_process_ctl_t
5289    WHERE req_id = p_req_id
5290    AND status IN (1,2);
5291 
5292    FEM_ENGINES_PKG.User_Message (
5293      p_app_name => 'FEM',
5294      p_msg_text => '
5295 ========== Warnings and Errors ==========');
5296 
5297    FOR i IN 1..v_msg_list.COUNT
5298    LOOP
5299       FEM_ENGINES_PKG.User_Message (
5300         p_app_name => 'FEM',
5301         p_msg_text => v_msg_list(i) );
5302    END LOOP;
5303 
5304    FEM_ENGINES_PKG.User_Message (
5305      p_app_name => 'FEM',
5306      p_msg_text => '=========================================
5307 ');
5308 
5309 END Post_Subreq_Messages;
5310 
5311 /**************************************************************************
5312  **************************************************************************
5313 
5314                       =============================
5315                            Delete Data Slices
5316                       =============================
5317 
5318  **************************************************************************
5319  **************************************************************************/
5320 
5321 PROCEDURE Delete_Data_Slices(
5322    p_req_id          IN  NUMBER)
5323 IS
5324 BEGIN
5325    DELETE FROM fem_mp_process_ctl_t
5326     WHERE req_id = p_req_id;
5327 
5328    COMMIT;
5329 
5330    DELETE FROM fem_mp_process_args_t
5331    WHERE req_id = p_req_id;
5332 
5333    COMMIT;
5334 
5335 END Delete_Data_Slices;
5336 
5337 /***************************************************************************/
5338 
5339 END FEM_Multi_Proc_Pkg;