[Home] [Help]
PACKAGE BODY: APPS.HR_PUMP_UTILS
Source
1 package body hr_pump_utils as
2 /* $Header: hrdputil.pkb 120.1 2006/01/11 08:25:50 arashid noship $ */
3 /*
4 NOTES
5 The user is referred to the header for details of any
6 functions and procedures defined here.
7 */
8 /*---------------------------------------------------------------------------*/
9 /*----------------------- constant definitions ------------------------------*/
10 /*---------------------------------------------------------------------------*/
11
12 /*---------------------------------------------------------------------------*/
13 /*--------------- internal Data Pump utility data structures ----------------*/
14 /*---------------------------------------------------------------------------*/
15
16 /*---------------------------------------------------------------------------*/
17 /*------------------------ Data Pump utility globals ------------------------*/
18 /*---------------------------------------------------------------------------*/
19 --
20 -- Is the current session is running Data Pump ?
21 --
22 g_current_session_running boolean := false;
23 --
24 -- Is Date-Track foreign key locking enforced ?
25 --
26 g_enforce_dt_foreign_locks boolean := true;
27 --
28 -- Are there multi-message utility errors ?
29 --
30 g_multi_msg_error boolean := false;
31 /*---------------------------------------------------------------------------*/
32 /*------------------ local functions and procedures -------------------------*/
33 /*---------------------------------------------------------------------------*/
34
35 /*---------------------------------------------------------------------------*/
36 /*------------------ global functions and procedures ------------------------*/
37 /*---------------------------------------------------------------------------*/
38
39 function create_batch_header
40 (
41 p_batch_name in varchar2,
42 p_business_group_name in varchar2 default null,
43 p_reference in varchar2 default null,
44 p_atomic_linked_calls in varchar2 default 'N'
45 ) return number is
46 l_batch_id number;
47 begin
48 -- Get the batch_id to allow return from function.
49 select hr_pump_batch_headers_s.nextval
50 into l_batch_id
51 from sys.dual;
52
53 -- Straight-forward insert statement
54 -- We don't look for an existing batch.
55 insert into hr_pump_batch_headers (
56 batch_id,
57 batch_name,
58 batch_status,
59 reference,
60 business_group_name,
61 atomic_linked_calls)
62 values (l_batch_id,
63 p_batch_name,
64 'U',
65 p_reference,
66 p_business_group_name,
67 upper(p_atomic_linked_calls));
68
69 return(l_batch_id);
70
71 end create_batch_header;
72
73 procedure add_user_key
74 (
75 p_user_key_value in varchar2,
76 p_unique_key_id in number
77 ) is
78 begin
79 -- Check arguments for validity.
80 if ( p_user_key_value is null or p_unique_key_id is null ) then
81 raise value_error;
82 end if;
83
84 -- Insert the values.
85 insert into hr_pump_batch_line_user_keys (
86 user_key_id,
87 batch_line_id,
88 user_key_value,
89 unique_key_id)
90 values (hr_pump_batch_line_user_keys_s.nextval,
91 null,
92 p_user_key_value,
93 p_unique_key_id);
94 end add_user_key;
95
96 procedure modify_user_key
97 (
98 p_user_key_value in varchar2,
99 p_new_user_key_value in varchar2,
100 p_unique_key_id in number
101 ) is
102 l_user_key_value hr_pump_batch_line_user_keys.user_key_value%type;
103 l_unique_key_id hr_pump_batch_line_user_keys.unique_key_id%type;
104 begin
105 -- Check input values.
106 if ( p_user_key_value is null ) then
107 raise value_error;
108 end if;
109
110 -- Get the current user key row.
111 select user_key_value, unique_key_id
112 into l_user_key_value,
113 l_unique_key_id
114 from hr_pump_batch_line_user_keys
115 where user_key_value = p_user_key_value;
116
117 -- Update the row.
118 update hr_pump_batch_line_user_keys
119 set user_key_value = nvl(p_new_user_key_value, l_user_key_value),
120 unique_key_id = nvl(p_unique_key_id, l_unique_key_id)
121 where user_key_value = p_user_key_value;
122 end modify_user_key;
123
124 procedure name( p_module_package in varchar2,
125 p_module_name in varchar2,
126 p_package_name out nocopy varchar2,
127 p_view_name out nocopy varchar2 )
128 is
129 begin
130 -- Very simple name generation. Names restricted to Oracle limit
131 -- of 30 bytes.
132 p_package_name := substrb( 'hrdpp_' || p_module_name, 1, 30 );
133 p_view_name := substrb( 'hrdpv_' || p_module_name, 1, 30 );
134 end name;
135
136 -------------------------------- SEED_ZAP -------------------------------------
137 PROCEDURE SEED_ZAP
138 (P_MODULE_NAME IN VARCHAR2
139 ,P_API_MODULE_TYPE IN VARCHAR2
140 ) IS
141 L_MODULE_NAME VARCHAR2(128);
142 L_API_MODULE_TYPE VARCHAR2(128);
143 BEGIN
144 L_MODULE_NAME := UPPER(P_MODULE_NAME);
145 L_API_MODULE_TYPE := UPPER(P_API_MODULE_TYPE);
146 --
147 -- Delete from the data pump tables.
148 --
149 DELETE
150 FROM HR_PUMP_MODULE_PARAMETERS
151 WHERE UPPER(MODULE_NAME) = L_MODULE_NAME
152 AND UPPER(API_MODULE_TYPE) = L_API_MODULE_TYPE;
153 --
154 DELETE
155 FROM HR_PUMP_DEFAULT_EXCEPTIONS
156 WHERE UPPER(MODULE_NAME) = L_MODULE_NAME
157 AND UPPER(API_MODULE_TYPE) = L_API_MODULE_TYPE;
158 --
159 DELETE
160 FROM HR_PUMP_MAPPING_PACKAGES
161 WHERE UPPER(MODULE_NAME) = L_MODULE_NAME
162 AND UPPER(API_MODULE_TYPE) = L_API_MODULE_TYPE;
163 --
164 END SEED_ZAP;
165
166 -------------------------------- SEED_API -------------------------------------
167 PROCEDURE SEED_API
168 (P_MODULE_NAME IN VARCHAR2
169 ,P_API_MODULE_TYPE IN VARCHAR2
170 ,P_MODULE_PACKAGE IN VARCHAR2
171 ,P_DATA_WITHIN_BUSINESS_GROUP IN VARCHAR2 DEFAULT 'Y'
172 ,P_LEGISLATION_CODE IN VARCHAR2 DEFAULT NULL
173 ) IS
174 L_API_MODULE_ID NUMBER;
175 L_MODULE_NAME VARCHAR2(128);
176 L_API_MODULE_TYPE VARCHAR2(128);
177 L_MODULE_PACKAGE VARCHAR2(128);
178 L_DATA_WITHIN_BUSINESS_GROUP VARCHAR2(128);
179 L_LEGISLATION_CODE VARCHAR2(128);
180 --
181 CURSOR CSR_API_MODULE_ID
182 (P_MODULE_NAME IN VARCHAR2
183 ,P_API_MODULE_TYPE IN VARCHAR2
184 ) IS
185 SELECT API_MODULE_ID
186 FROM HR_API_MODULES
187 WHERE UPPER(MODULE_NAME) = P_MODULE_NAME
188 AND UPPER(API_MODULE_TYPE) = P_API_MODULE_TYPE;
189 BEGIN
190 L_MODULE_NAME := UPPER(P_MODULE_NAME);
191 L_API_MODULE_TYPE := UPPER(P_API_MODULE_TYPE);
192 L_MODULE_PACKAGE := UPPER(P_MODULE_PACKAGE);
193 L_DATA_WITHIN_BUSINESS_GROUP := UPPER(P_DATA_WITHIN_BUSINESS_GROUP);
194 L_LEGISLATION_CODE := UPPER(P_LEGISLATION_CODE);
195 --
196 -- Get the API_MODULE_ID.
197 --
198 OPEN CSR_API_MODULE_ID
199 (P_MODULE_NAME => L_MODULE_NAME
200 ,P_API_MODULE_TYPE => L_API_MODULE_TYPE
201 );
202 FETCH CSR_API_MODULE_ID
203 INTO L_API_MODULE_ID;
204 --
205 -- Call the appropriate API depending on whether or not a row in
206 -- HR_API_MODULES exists.
207 --
208 IF CSR_API_MODULE_ID%NOTFOUND THEN
209 CLOSE CSR_API_MODULE_ID;
210 HR_API_MODULE_INTERNAL.CREATE_API_MODULE
211 (P_VALIDATE => FALSE
212 ,P_EFFECTIVE_DATE => HR_API.G_SYS
213 ,P_API_MODULE_TYPE => L_API_MODULE_TYPE
214 ,P_MODULE_NAME => L_MODULE_NAME
215 ,P_DATA_WITHIN_BUSINESS_GROUP => L_DATA_WITHIN_BUSINESS_GROUP
216 ,P_LEGISLATION_CODE => L_LEGISLATION_CODE
217 ,P_MODULE_PACKAGE => L_MODULE_PACKAGE
218 ,P_API_MODULE_ID => L_API_MODULE_ID
219 );
220 ELSE
221 CLOSE CSR_API_MODULE_ID;
222 HR_API_MODULE_INTERNAL.UPDATE_API_MODULE
223 (P_VALIDATE => FALSE
224 ,P_API_MODULE_ID => L_API_MODULE_ID
225 ,P_MODULE_NAME => L_MODULE_NAME
226 ,P_MODULE_PACKAGE => L_MODULE_PACKAGE
227 ,P_DATA_WITHIN_BUSINESS_GROUP => L_DATA_WITHIN_BUSINESS_GROUP
228 ,P_EFFECTIVE_DATE => HR_API.G_SYS
229 );
230 END IF;
231 END SEED_API;
232
233 --------------------------- SEED_DFLT_EXC -------------------------------------
234 PROCEDURE SEED_DFLT_EXC
235 (P_MODULE_NAME IN VARCHAR2
236 ,P_API_MODULE_TYPE IN VARCHAR2
237 ) IS
238 L_MODULE_NAME VARCHAR2(128);
239 L_API_MODULE_TYPE VARCHAR2(128);
240 BEGIN
241 L_MODULE_NAME := UPPER(P_MODULE_NAME);
242 L_API_MODULE_TYPE := UPPER(P_API_MODULE_TYPE);
243 --
244 DELETE
245 FROM HR_PUMP_DEFAULT_EXCEPTIONS
246 WHERE UPPER(MODULE_NAME) = L_MODULE_NAME
247 AND UPPER(API_MODULE_TYPE) = L_API_MODULE_TYPE;
248 --
249 INSERT
250 INTO HR_PUMP_DEFAULT_EXCEPTIONS
251 (MODULE_NAME
252 ,API_MODULE_TYPE
253 )
254 VALUES
255 (L_MODULE_NAME
256 ,L_API_MODULE_TYPE
257 );
258 END SEED_DFLT_EXC;
259
260 ------------------------------- SEED_PARM -------------------------------------
261 PROCEDURE SEED_PARM
262 (P_MODULE_NAME IN VARCHAR2
263 ,P_API_MODULE_TYPE IN VARCHAR2
264 ,P_PARAMETER_NAME IN VARCHAR2
265 ,P_MAPPING_TYPE IN VARCHAR2 DEFAULT 'FUNCTION'
266 ,P_MAPPING_DEFINITION IN VARCHAR2 DEFAULT NULL
267 ,P_DEFAULT_VALUE IN VARCHAR2 DEFAULT NULL
268 ) IS
269 L_MODULE_NAME VARCHAR2(128);
270 L_API_MODULE_TYPE VARCHAR2(128);
271 L_PARAMETER_NAME VARCHAR2(128);
272 L_MAPPING_TYPE VARCHAR2(128);
273 L_MAPPING_DEFINITION VARCHAR2(128);
274 L_DEFAULT_VALUE VARCHAR2(128);
275 BEGIN
276 L_MODULE_NAME := UPPER(P_MODULE_NAME);
277 L_API_MODULE_TYPE := UPPER(P_API_MODULE_TYPE);
278 L_PARAMETER_NAME := UPPER(P_PARAMETER_NAME);
279 L_MAPPING_TYPE := UPPER(P_MAPPING_TYPE);
280 L_MAPPING_DEFINITION := UPPER(P_MAPPING_DEFINITION);
281 L_DEFAULT_VALUE := UPPER(P_DEFAULT_VALUE);
282 --
283 DELETE
284 FROM HR_PUMP_MODULE_PARAMETERS
285 WHERE UPPER(MODULE_NAME) = L_MODULE_NAME
286 AND UPPER(API_MODULE_TYPE) = L_API_MODULE_TYPE
287 AND UPPER(API_PARAMETER_NAME) = L_PARAMETER_NAME;
288 --
289 INSERT
290 INTO HR_PUMP_MODULE_PARAMETERS
291 (MODULE_NAME
292 ,API_MODULE_TYPE
293 ,API_PARAMETER_NAME
294 ,MAPPING_TYPE
295 ,MAPPING_DEFINITION
296 ,DEFAULT_VALUE
297 )
298 VALUES
299 (L_MODULE_NAME
300 ,L_API_MODULE_TYPE
301 ,L_PARAMETER_NAME
302 ,L_MAPPING_TYPE
303 ,L_MAPPING_DEFINITION
304 ,L_DEFAULT_VALUE
305 );
306 END SEED_PARM;
307
308 ------------------------------- SEED_MAP_PKGS ---------------------------------
309 PROCEDURE SEED_MAP_PKGS
310 (P_MAPPING_PACKAGE IN VARCHAR2
311 ,P_MODULE_NAME IN VARCHAR2 DEFAULT NULL
312 ,P_API_MODULE_TYPE IN VARCHAR2 DEFAULT NULL
313 ,P_MODULE_PACKAGE IN VARCHAR2 DEFAULT NULL
314 ,P_CHECKING_ORDER IN NUMBER
315 ) IS
316 L_MAPPING_PACKAGE VARCHAR2(128);
317 L_MODULE_NAME VARCHAR2(128);
318 L_API_MODULE_TYPE VARCHAR2(128);
319 L_MODULE_PACKAGE VARCHAR2(128);
320 BEGIN
321 L_MAPPING_PACKAGE := UPPER(P_MAPPING_PACKAGE);
322 L_MODULE_NAME := UPPER(P_MODULE_NAME);
323 L_API_MODULE_TYPE := UPPER(P_API_MODULE_TYPE);
324 L_MODULE_PACKAGE := UPPER(P_MODULE_PACKAGE);
325 --
326 DELETE
327 FROM HR_PUMP_MAPPING_PACKAGES
328 WHERE UPPER(MAPPING_PACKAGE) = L_MAPPING_PACKAGE
329 AND NVL(UPPER(MODULE_NAME), HR_API.G_VARCHAR2) =
330 NVL(L_MODULE_NAME, HR_API.G_VARCHAR2)
331 AND NVL(UPPER(API_MODULE_TYPE), HR_API.G_VARCHAR2) =
332 NVL(L_API_MODULE_TYPE, HR_API.G_VARCHAR2)
333 AND NVL(UPPER(MODULE_PACKAGE), HR_API.G_VARCHAR2) =
334 NVL(L_MODULE_PACKAGE, HR_API.G_VARCHAR2);
335 --
336 INSERT
337 INTO HR_PUMP_MAPPING_PACKAGES
338 (MAPPING_PACKAGE
339 ,MODULE_NAME
340 ,API_MODULE_TYPE
341 ,MODULE_PACKAGE
342 ,CHECKING_ORDER
343 )
344 VALUES
345 (L_MAPPING_PACKAGE
346 ,L_MODULE_NAME
347 ,L_API_MODULE_TYPE
348 ,L_MODULE_PACKAGE
349 ,P_CHECKING_ORDER
350 );
351 END SEED_MAP_PKGS;
352
353 ------------------------- set_current_session_running ------------------------
354 procedure set_current_session_running(p_running in boolean) is
355 begin
356 g_current_session_running := p_running;
357 end set_current_session_running;
358
359 ----------------------- set_dt_enforce_foreign_locks ------------------------
360 procedure set_dt_enforce_foreign_locks(p_enforce in boolean) is
361 begin
362 g_enforce_dt_foreign_locks := p_enforce;
363 end set_dt_enforce_foreign_locks;
364
365 ------------------------------- any_session_running --------------------------
366 function any_session_running return boolean is
367 cursor csr_data_pump_requests is
368 select request_id
369 from hr_pump_requests
370 ;
371 l_found boolean := false;
372 l_ret boolean;
373 l_phase varchar2(2000);
374 l_status varchar2(2000);
375 l_dev_phase varchar2(2000);
376 l_dev_status varchar2(2000);
377 l_message varchar2(2000);
378 begin
379 if not g_current_session_running then
380 for crec in csr_data_pump_requests loop
381 l_ret :=
382 fnd_concurrent.get_request_status
383 (request_id => crec.request_id
384 ,phase => l_phase
385 ,status => l_status
386 ,dev_phase => l_dev_phase
387 ,dev_status => l_dev_status
388 ,message => l_message
389 );
390 --
391 -- Need to check success value of GET_REQUEST_STATUS. A dev status
392 -- of RUNNING means that the request is running.
393 --
394 if l_ret then
395 if l_dev_phase = 'RUNNING' then
396 return true;
397 end if;
398 else
399 fnd_message.raise_error;
400 end if;
401 end loop;
402 --
403 -- If the code got here then there are no Data Pump concurrent
404 -- processes.
405 --
406 return false;
407 end if;
408 --
409 -- The current session is running Data Pump.
410 --
411 return true;
412 end any_session_running;
413
414 --------------------------- current_session_running --------------------------
415 function current_session_running return boolean is
416 begin
417 return g_current_session_running;
418 end current_session_running;
419
420 ------------------------- dt_enforce_foreign_locks ---------------------------
421 function dt_enforce_foreign_locks return boolean is
422 l_dummy varchar2(1);
423 l_enforced boolean;
424 cursor csr_unenforced_locks is
425 select null
426 from pay_action_parameter_values pap
427 where pap.parameter_name = 'PUMP_DT_ENFORCE_FOREIGN_LOCKS'
428 and pap.parameter_value <> 'Y'
429 and pap.parameter_value <> 'y'
430 ;
431 begin
432 --
433 -- If this session is a Data Pump session then the value to use is
434 -- G_ENFORCE_DT_FOREIGN_LOCKS as the choice is made when running Data Pump.
435 --
436 if g_current_session_running then
437 l_enforced := g_enforce_dt_foreign_locks;
438 --
439 -- For a non-Data Pump session, check if there is a chance of a Data Pump
440 -- session setting the lock action parameter.
441 --
442 else
443 open csr_unenforced_locks;
444 fetch csr_unenforced_locks into l_dummy;
445 l_enforced := csr_unenforced_locks%notfound;
446 close csr_unenforced_locks;
447 end if;
448 --
449 return l_enforced;
450 exception
451 when others then
452 if csr_unenforced_locks%isopen then
453 close csr_unenforced_locks;
454 end if;
455 raise;
456 end dt_enforce_foreign_locks;
457
458 --------------------------- set_multi_msg_error_flag -------------------------
459 procedure set_multi_msg_error_flag(p_value in boolean) is
460 begin
461 g_multi_msg_error := p_value;
462 end set_multi_msg_error_flag;
463
464 --------------------------- multi_msg_errors_exist ----------------------------
465 function multi_msg_errors_exist return boolean is
466 begin
467 return g_multi_msg_error;
468 end multi_msg_errors_exist;
469
470
471 -------------------------populate_spread_loaders_tab -------------------------
472 procedure populate_spread_loaders_tab
473 (
474 p_module_name in varchar2
475 ,p_integrator_code in varchar2
476 ,p_entity_name in varchar2 default null
477 ,p_module_mode in varchar2
478 ,p_entity_sql_column_name in varchar2 default null
479 ,p_entity_sql_column_id in varchar2 default null
480 ,p_entity_sql_addl_column in varchar2 default null
481 ,p_entity_sql_object_name in varchar2 default null
482 ,p_entity_sql_where_clause in varchar2 default null
483 ,p_entity_sql_parameters in varchar2 default null
484 ,p_entity_sql_order_by in varchar2 default null
485 ,p_integrator_parameters in varchar2
486 )
487 is
488
489 cursor csr_get_api_module_id (p_module_name hr_pump_spread_loaders.module_name%type) is
490 select api_module_id
491 from hr_api_modules
492 where module_name = p_module_name
493 and api_module_type in ('AI','BP');
494
495 cursor csr_chk_row_exists is
496 select 1
497 from hr_pump_spread_loaders
498 where module_name = p_module_name
499 and integrator_code = p_integrator_code
500 and module_mode = p_module_mode;
501
502 l_exists number;
503 l_api_module_id number;
504 l_api_module_name varchar2(200);
505 l_api_name varchar2(200);
506 begin
507
508 if (p_module_name = 'USER_TABLE' and p_module_mode in ('I','IC')) then
509 l_api_module_name :='CREATE_USER_TABLE';
510 l_api_name := 'PAY_USER_TABLE_API';
511 --
512 elsif (p_module_name = 'USER_TABLE' and p_module_mode in ('U','UC')) then
513 l_api_module_name :='UPDATE_USER_TABLE';
514 l_api_name := 'PAY_USER_TABLE_API';
515 --
516 elsif (p_module_name = 'USER_COLUMN' and p_module_mode in ('I','IC')) then
517 l_api_module_name :='CREATE_USER_COLUMN';
518 l_api_name := 'PAY_USER_COLUMN_API';
519 --
520 elsif (p_module_name = 'USER_COLUMN' and p_module_mode in ('U','UC')) then
521 l_api_module_name := 'UPDATE_USER_COLUMN';
522 l_api_name := 'PAY_USER_COLUMN_API';
523 --
524 elsif (p_module_name = 'USER_ROWS' and p_module_mode in ('I','IC')) then
525 l_api_module_name :='CREATE_USER_ROW';
526 l_api_name := 'PAY_USER_ROW_API';
527 --
528 elsif (p_module_name = 'USER_ROWS' and p_module_mode in ('U','UC')) then
529 l_api_module_name :='UPDATE_USER_ROW';
530 l_api_name := 'PAY_USER_ROW_API';
531 --
532 elsif (p_module_name = 'USER_COLUMNS_INSTANCE' and p_module_mode in ('I','IC')) then
533 l_api_module_name :='CREATE_USER_COLUMN_INSTANCE';
534 l_api_name := 'PAY_USER_COLUMN_INSTANCE_API';
535 --
536 elsif (p_module_name = 'USER_COLUMNS_INSTANCE' and p_module_mode in ('U','UC')) then
537 l_api_module_name :='UPDATE_USER_COLUMN_INSTANCE';
538 l_api_name := 'PAY_USER_COLUMN_INSTANCE_API';
539 --
540 elsif (p_module_name = 'USER_COLUMN_INSTA_MATRIX' and p_module_mode = 'I') then
541 l_api_module_name := 'CREATE_USER_COLUMN_INSTANCE';
542 l_api_name := 'PAY_USER_COLUMN_INSTANCE_API';
543 end if;
544
545 open csr_get_api_module_id(l_api_module_name);
546 fetch csr_get_api_module_id into l_api_module_id;
547
548 if (csr_get_api_module_id%notfound) then
549 close csr_get_api_module_id;
550 hr_utility.set_message('800','HR_33156_DP_NOT_IN_API_MODULES');
551 hr_utility.set_message_token('API', l_api_name || '.' || l_api_module_name );
552 hr_utility.raise_error;
553 end if;
554
555 close csr_get_api_module_id;
556
557 open csr_chk_row_exists;
558 fetch csr_chk_row_exists into l_exists;
559
560 if (csr_chk_row_exists%found) then
561 update hr_pump_spread_loaders set
562 entity_name = p_entity_name
563 ,api_module_id = l_api_module_id
564 ,entity_sql_column_name = p_entity_sql_column_name
565 ,entity_sql_column_id = p_entity_sql_column_id
566 ,entity_sql_addl_column = p_entity_sql_addl_column
567 ,entity_sql_object_name = p_entity_sql_object_name
568 ,entity_sql_where_clause= p_entity_sql_where_clause
569 ,entity_sql_parameters = p_entity_sql_parameters
570 ,entity_sql_order_by = p_entity_sql_order_by
571 ,integrator_parameters = p_integrator_parameters
572
573 where module_name = p_module_name
574 and integrator_code = p_integrator_code
575 and module_mode = p_module_mode;
576
577 else
578 insert into hr_pump_spread_loaders
579 (
580 module_name
581 ,integrator_code
582 ,entity_name
583 ,module_mode
584 ,api_module_id
585 ,entity_sql_column_name
586 ,entity_sql_column_id
587 ,entity_sql_addl_column
588 ,entity_sql_object_name
589 ,entity_sql_where_clause
590 ,entity_sql_parameters
591 ,entity_sql_order_by
592 ,integrator_parameters
593 )
594 values
595 (
596 p_module_name
597 ,p_integrator_code
598 ,p_entity_name
599 ,p_module_mode
600 ,l_api_module_id
601 ,p_entity_sql_column_name
602 ,p_entity_sql_column_id
603 ,p_entity_sql_addl_column
604 ,p_entity_sql_object_name
605 ,p_entity_sql_where_clause
606 ,p_entity_sql_parameters
607 ,p_entity_sql_order_by
608 ,p_integrator_parameters
609 );
610 end if;
611
612 close csr_chk_row_exists;
613 end populate_spread_loaders_tab;
614
615 end hr_pump_utils;