小弟写了个存储过程,跟踪发现cursor不能获得传进来得参数v_outbd_id,
create or replace procedure dll_proc(v_outbd_id in varchar2) as
cursor cur_test
is
select inq_id,outbd_grpid from outbd_all where outbd_id=v_outbd_id and rownum<10 ;
v_inq_id varchar(20);
v_outbd_grpid number(8);
begin
open cur_test;
dbms_output.put_line(cur_test%rowcount);
loop
fetch cur_test into v_inq_id,v_outbd_grpid;
exit when (cur_test%notfound);
end loop;
close cur_test;
commit;
end dll_proc;
很是怪异啊,输出总是为0,如果把where后面得条件删掉就可以了哈,各位帮忙啊!!
create or replace procedure dll_proc(v_outbd_id in varchar2) as
cursor cur_test
is
select inq_id,outbd_grpid from outbd_all where outbd_id=v_outbd_id and rownum<10 ;
v_inq_id varchar(20);
v_outbd_grpid number(8);
begin
open cur_test;
dbms_output.put_line(cur_test%rowcount);
loop
fetch cur_test into v_inq_id,v_outbd_grpid;
exit when (cur_test%notfound);
end loop;
close cur_test;
commit;
end dll_proc;
很是怪异啊,输出总是为0,如果把where后面得条件删掉就可以了哈,各位帮忙啊!!
create or replace procedure dll_proc(v_outbd_id in varchar2) as
cursor cur_test(p_id) is
select inq_id,outbd_grpid
from outbd_all
where outbd_id=p_id
and rownum<10 ;
v_inq_id varchar(20);
v_outbd_grpid number(8);
begin
open cur_test(v_outbd_id);
dbms_output.put_line(cur_test%rowcount);
loop
fetch cur_test into v_inq_id,v_outbd_grpid;
exit when (cur_test%notfound);
end loop;
close cur_test; --commit;
end dll_proc;
loop
fetch cur_test into v_inq_id,v_outbd_grpid;
exit when (cur_test%notfound);
end loop;
close cur_test;
这个根本没循环,而符合条件得记录绝对是有得。
fetch cur_test into v_inq_id,v_outbd_grpid;
dbms_output.put_line(cur_test%rowcount);
exit when (cur_test%notfound);
end loop;
close cur_test;