先看以代码把 open ro3(v_kssj,v_jssj); fetch ro3 into v_temp;
exit when ro3%notfound;
loop
v_pzbh:=v_pzbh||','||v_temp;
end loop;
close ro3;这样就会报错 如过把游标去掉 直接就不会报错
我不知道这是为什么?求高手赐教!
exit when ro3%notfound;
loop
v_pzbh:=v_pzbh||','||v_temp;
end loop;
close ro3;这样就会报错 如过把游标去掉 直接就不会报错
我不知道这是为什么?求高手赐教!
select v_pzbh||','||v_temp into v_pzbh from dual;
--循环错了
open ro3(v_kssj,v_jssj);
loop --loop要在这里
fetch ro3 into v_temp;
exit when ro3%notfound;
v_pzbh:=v_pzbh||','||v_temp;
end loop;
close ro3;
fetch 的时候用加参数吗?
如fetch fo3(v_kssj, v_jssj) into v_temp;
loop
fetch ro3 into v_temp;
exit when ro3%notfound;
v_pzbh:=v_pzbh||','||v_temp;
end loop;
close ro3;
你那样子。。语法错误,loop退不出来
SQL> set serveroutput on;
SQL>
SQL> declare
2 v_empno number;
3 v_temp emp%rowtype;
4 cursor ro3(eno varchar2) is
5 select * from emp where empno = eno;
6 v_pzbh varchar2(200);
7 begin
8 v_empno := 7369;
9 open ro3(v_empno);
10 loop
11 fetch ro3
12 into v_temp;
13 exit when ro3%notfound;
14 v_pzbh := v_temp.empno || ',' || v_temp.ename;
15 dbms_output.put_line(v_pzbh);
16 end loop;
17 close ro3;
18 end;
19 /7369,SMITHPL/SQL procedure successfully completedSQL>
open ro3(v_kssj,v_jssj); loop
fetch ro3 into v_temp;
exit when ro3%notfound;
v_pzbh:=v_pzbh||','||v_temp;
end loop;
close ro3;
2、ro3是如何声明的,除非只取了一个字段(你只给了一个接收变量v_temp),否则会出错的。
3、如果不是动态游标的话,还是使用for游循环吧,简洁,简单,不易出错。
for c in ro3(v_kssj,v_jssj) loop
v_pzbh:=v_pzbh||','||c.pzbh;
end loop;
这样的,你的 exit when 写错地方了,要放在 loop 里面,再试试了
"如果不是动态游标的话,还是使用for游循环吧, "
为什么动态游标不建议使用for?