[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;