我在匿名区块中调用了一个函数pck_my_pack
。f_my_func
,f_my_func
返回sys_refcursor
。
我希望将来自req_column
的{{1}}的值用作
sys_refcursor
IF req_column>0 THEN
do this and that
END IF;
返回的问题sys_refcursor
未选择特定表中的值。它从多个表和少量本地变量中选择值,这些变量是在my_func
中计算的。
请帮助我从my_func
获取价值。
这是我正在尝试的:
sys_refcursor
答案 0 :(得分:1)
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;
答案 1 :(得分:0)
您必须知道sys_refcursor中列的类型和名称。 并在其上执行获取操作。
DECLARE
TYPE cu_income_detail is ref cursor;
income_det cu_income_detail;
BEGIN
income_det := pck_my_pack.f_my_func(2542586);
loop
fetch income_det into var_1, var_2 ... var_3;
-- Logic here
exit when income_det%notfound;
end loop;
END;