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