Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Error: Single-Row subquery returns more than one row’ error.

user1163882Apr 23 2014 — edited Apr 25 2014

Hello,

I am calling below procedure and sometimes it gives error as mentioned above:

below is part of procedure :

CURSOR cEmpEvents (

        p_person_id   IN NUMBER) IS

       SELECT pe.event_id, pe.object_version_number, ppr.performance_review_id, ppr.object_version_number

        FROM per_events pe, per_performance_reviews ppr, per_assignments_x pax

        WHERE pax.person_id = p_person_id

        AND pax.assignment_id = pe.assignment_id

        AND ppr.event_id = pe.event_id

        AND TRUNC(SYSDATE) < pe.date_start;

BEGIN

/*

fnd_global.APPS_INITIALIZE(

    p_last_updated_by,

    20536,

    800,

    0,

    -1);

*/

BEGIN

SELECT period_of_service_id,

      object_version_number,

      last_standard_process_date

INTO  l_period_of_service_id,l_object_version_num,l_last_standard_process_date1

FROM per_periods_of_service pps

WHERE 1=1

AND person_id = p_person_id

AND actual_termination_date is NULL;

SELECT *

INTO l_last_standard_process_date1, l_final_proccess_date1

FROM

  (SELECT pp.end_date ,

    lead(pp.end_date) over (order by pp.end_date) next_end_date

  FROM per_all_assignments_f p ,

    per_time_periods pp

  WHERE trunc(SYSDATE) BETWEEN p.effective_start_date AND p.effective_end_date

  AND p.person_id      = p_person_id

  AND p.payroll_id     = pp.payroll_id

  AND pp.end_date >= TRUNC(TO_DATE(TO_CHAR(TO_DATE(p_actual_termination_date,'YYYY-MM-DD'),'DD-MON-YYYY'))) --

  AND rownum          <= 2

  ) inner_q

WHERE rownum=1;

EXCEPTION WHEN OTHERS THEN

l_error_flag := 'E';

l_error_message := 'Error fetching the employee period of service details.'||sqlcode||'   '||SUBSTR(sqlerrm,12,200);

l_error_code := sqlcode; -- to handle the exception propertly in webcenter.

END;

l_termination_date1 := TO_DATE(TO_CHAR(TO_DATE(p_actual_termination_date,'YYYY-MM-DD'),'DD-MON-YYYY'));

--   l_last_standard_process_date1 := TO_DATE(TO_CHAR(TO_DATE(p_last_standard_process_date,'YYYY-MM-DD'),'DD-MON-YYYY'));

BEGIN

p_supervisor_warning               := NULL;

p_event_warning                    := NULL;

p_interview_warning                := NULL;

p_review_warning                   := NULL;

p_recruiter_warning                := NULL;

p_asg_future_changes_warning       := NULL;

p_entries_changed_warning          := NULL;

p_pay_proposal_warning             := NULL;

p_dod_warning                      := NULL;

p_org_now_no_manager_warning       := NULL;

      --mvadera initialize the session before starting DB transaction

      init_user_session(p_last_updated_by);

-- A.Lanz -> Delete all the futures events and perf Reviews if any.

OPEN cEmpEvents(p_person_id);

  LOOP

      FETCH cEmpEvents INTO l_event_id, l_event_object_version_number, l_per_id, l_per_object_version_number;

        EXIT WHEN cEmpEvents%NOTFOUND;

         IF l_per_id is not  null THEN

          hr_perf_review_api.delete_perf_review(p_performance_review_id => l_per_id, p_object_version_number => l_per_object_version_number);

         END IF;

         IF l_event_id is not null THEN

          per_events_api.delete_event(p_event_id => l_event_id,p_object_version_number => l_event_object_version_number);

         END IF;

  END LOOP;

CLOSE cEmpEvents;

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on May 23 2014
Added on Apr 23 2014
20 comments
1,270 views