Search code examples
oraclefunctionplsqlparameterscursor

Oracle - Get function parameter value in cursor


I have a package where I have created one function like this

create or replace package pk_server_control
is
function fn_get_employees_by_consultant(consultant_id number) return number;
end;
-----------------------------------------------------------------
create or replace package body pk_server_control
is

 **function fn_get_employees_by_consultant(consultant_id number)
 return number
 is
  cursor employees is select c.CST_NAME, a.NO_OF_EMPLOYEES from NISHAN_LDS_ACCOUNT a join NISHAN_LDS_CONSULTANT c
                      on c.CONSULTANT_ID = a.FK1_CONSULTANT_ID where c.CONSULTANT_ID =consultant_id ;
 total number := 0; **

 begin
   for data in employees
   loop
    total := total + data.NO_OF_EMPLOYEES;
   end loop;

   return total;
 end;
end;


begin
dbms_output.put_line(pk_server_control.fn_get_employees_by_consultant(1));
end;

I need to get value from the parameter "consultant_id number" of function "fn_get_employees_by_consultant" into "consultant_id" of the cursor "". While running, it doesn't give an error also it doesn't pass the value. Please help me to get through this :)


Solution

  • Try this

    create or replace package pk_server_control
    is
     function fn_get_employees_by_consultant(consultant_id number) return number;
    end;
    -----------------------------------------------------------------
    create or replace package body pk_server_control
    is
      function fn_get_employees_by_consultant(consultant_id number)
      return number
      is
       val number := consultant_id;
       cursor employees is select c.CST_NAME, a.NO_OF_EMPLOYEES from NISHAN_LDS_ACCOUNT a join NISHAN_LDS_CONSULTANT c
                           on c.CONSULTANT_ID = a.FK1_CONSULTANT_ID where c.CONSULTANT_ID =val;
      total number := 0;
    
      begin
        for data in employees 
        loop
         total := total + data.NO_OF_EMPLOYEES;
        end loop;
    
        return total;
      end;
    end;
    
    
    begin
     dbms_output.put_line(pk_server_control.fn_get_employees_by_consultant(3));
    end;