Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get value of column from sys_refcursor returned by a function being called

I am calling a function pck_my_pack.f_my_func in my anonymous block , f_my_func returns a sys_refcursor.

I want the value of req_column from sys_refcursor to used as

IF req_column>0 THEN 
 do this and that
END IF;

Problem is sys_refcursor which is being returned by my_func does not select values from a specific table. it selects values from multiple tables and few locals variables which were calculated in my_func.

Please help me out to get the value from this sys_refcursor. Here is what I am trying:

DECLARE 
TYPE cu_income_detail is ref cursor;
income_det cu_income_detail;
BEGIN 

    income_det := pck_my_pack.f_my_func(2542586);

    FOR CURRVAL IN income_det LOOP     -- I have also tried CUR_VAL
         IF CURRVAL.pcls_paid_as_income > 0 THEN 
         -- Logic yet to be implemented once get the value
         dbms_output.put('PCLS paid');  
         dbms_output.put_line(CUR_VAL.pcls_paid_as_income);
        END IF;
    END LOOP;
END;
like image 591
prnjn Avatar asked Dec 13 '25 17:12

prnjn


1 Answers

declare 
  src_cur sys_refcursor;
  curid    NUMBER;
  v_jobtitle varchar2(35);
  v_min_salary number;
begin 
  open src_cur for 'select job_id,job_title,min_salary,max_salary from jobs';
  curid := DBMS_SQL.TO_CURSOR_NUMBER(src_cur);
  dbms_sql.define_column(curid,2,v_jobtitle,35);
  dbms_sql.define_column(curid,3,v_min_salary);
   WHILE DBMS_SQL.FETCH_ROWS(curid) > 0 LOOP
       DBMS_SQL.COLUMN_VALUE(curid, 2, v_jobtitle);
       DBMS_SQL.COLUMN_VALUE(curid, 3, v_min_salary);
       DBMS_OUTPUT.put_line('job_titile='||v_jobtitle||' ;min_salary='||v_min_salary);
  END LOOP;
  DBMS_SQL.CLOSE_CURSOR(curid);
end;
like image 188
Arkadiusz Łukasiewicz Avatar answered Dec 16 '25 11:12

Arkadiusz Łukasiewicz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!