游标怎么打印啊
例如:
declare
tt sys_refcursor;
begin
test000('110001','北京',tt);
dbms_output.put_line(tt);
end;但是这样报错啊
ORA-06550: line 5, column 1:
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'
ORA-06550: line 5, column 1:
例如:
declare
tt sys_refcursor;
begin
test000('110001','北京',tt);
dbms_output.put_line(tt);
end;但是这样报错啊
ORA-06550: line 5, column 1:
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'
ORA-06550: line 5, column 1:
-- 存储过程返回记录集
CREATE OR REPLACE PROCEDURE P_RETR_CURSOR
(P_ID IN NUMBER,
P_RECSET OUT SYS_REFCURSOR) AS
BEGIN
OPEN P_RECSET FOR
SELECT e.empno,e.ename
FROM emp e
WHERE empno = P_ID;
END;DECLARE
I NUMBER;
S VARCHAR2(100);
M SYS_REFCURSOR;
BEGIN
FOR J IN 7900..7902 LOOP
P_RETR_CURSOR(J, M);
FETCH M
INTO I, S;
DBMS_OUTPUT.PUT(I || '-');
DBMS_OUTPUT.PUT_LINE(S);
CLOSE M;
END LOOP;
END;
/
--过程
create or replace procedure test000(I_FUNDCODE in varchar2,I_PROVINCE in varchar2,RT_CURSOR out sys_refcursor) is
begin
open RT_CURSOR for select PV.NAME, PS.FUNDNAME,
count(case when ct.age between 1 and 20 then 1 else null end) less20,
count(case when ct.age between 21 and 40 then 1 else null end) less40,
count(case when ct.age > 41 then 1 else null end) more40,
sum(ts.curshare) curshare
from CUSTOMERS ct, PROVINCE pv, TA_SHARE ts, PRODUCTS1 ps
where pv.id = ct.province
and ct.taaccoid = TS.TAACCOID
and TS.FUNDCODE = I_FUNDCODE
and pv.name=I_PROVINCE
group by PV.NAME, PS.FUNDNAME
order by 1, 2;
end;
--调用
declare
I_FUNDCODE varchar2(50);
I_PROVINCE varchar2(50);
p_name varchar2(50);
f_name varchar2(50);
v1 number;
v2 number;
v3 number;
v4 number;
cur sys_refcursor;
begin
I_FUNDCODE:='110001';
I_PROVINCE:='北京';
test000(I_FUNDCODE,I_PROVINCE,cur);
fetch cur into p_name,f_name,v1,v2,v3,v4;
while cur%found loop
dbms_output.put_line(p_name||'-'||f_name||'-'||to_char(v1)||'-'||to_char(v2)||'-'||to_char(v3)||'-'||to_char(v4));
fetch cur into p_name,f_name,v1,v2,v3,v4;
end loop;
close cur;
end;
v1 number; --少于20的
v2 number; --大于20少于40
v3 number; --大于40的
v4 number; --sum(ts.curshare)