981: AND epc.process_component_name = c_process_component_name;
982: --
983: BEGIN
984: -- Get lock handle for EFC lock
985: dbms_lock.allocate_unique(lockname => 'HR_EFC_PROCESS_COMPONENTS'
986: ,lockhandle => l_lockhandle);
987: --
988: LOOP
989: -- Attempt to take lock
986: ,lockhandle => l_lockhandle);
987: --
988: LOOP
989: -- Attempt to take lock
990: l_lock_result := dbms_lock.request(lockhandle => l_lockhandle
991: ,lockmode => dbms_lock.x_mode
992: ,timeout => dbms_lock.maxwait
993: ,release_on_commit => TRUE
994: );
987: --
988: LOOP
989: -- Attempt to take lock
990: l_lock_result := dbms_lock.request(lockhandle => l_lockhandle
991: ,lockmode => dbms_lock.x_mode
992: ,timeout => dbms_lock.maxwait
993: ,release_on_commit => TRUE
994: );
995: IF ((l_lock_result = 0) OR (l_lock_result = 4)) THEN
988: LOOP
989: -- Attempt to take lock
990: l_lock_result := dbms_lock.request(lockhandle => l_lockhandle
991: ,lockmode => dbms_lock.x_mode
992: ,timeout => dbms_lock.maxwait
993: ,release_on_commit => TRUE
994: );
995: IF ((l_lock_result = 0) OR (l_lock_result = 4)) THEN
996: -- Have lock, exit loop
996: -- Have lock, exit loop
997: EXIT;
998: ELSIF ((l_lock_result =1) OR (l_lock_result = 2)) THEN
999: -- Lock timed out, or deadlock
1000: dbms_lock.sleep(p_worker_id);
1001: ELSE
1002: -- Parameter error or illegal lock handle, so error
1003: hr_utility.set_message(800,'PER_52717_EFC_PROC_LOCK_ERR');
1004: hr_utility.raise_error;