日期:2014-05-17  浏览次数:20885 次

存储过程的一些问题

create or replace 
procedure selectFolder(x in number,y in varchar2,z out number) is a varchar2(50); cc number;d sys_refcursor;total number;one number;
begin
 select count(*) into z from file_size where node_id=x and type=y;
end;

create or replace 
procedure countFolder(a in varchar2) is node_id number;localname varchar2(255);num number;d sys_refcursor;
begin
open d for 
  select child_node_id,qname_localname into node_id,localname from alf_child_assoc where ff=a;
loop 
  fetch d into node_id,localname;exit when d%notfound;
--调用selectFolder--
  selectFolder(node_id,a,num); 
  dbms_output.put_line(localname||'  '||num);
end loop;
end;


我在java中想调用countFolder这个过程,想得到包含localname和num两列的结果集,countFolder中应该怎么改?
------解决方案--------------------
引用:

create or replace 
procedure selectFolder(x in number,y in varchar2,z out number) is a varchar2(50); cc number;d sys_refcursor;total number;one number;
begin
 select count(*) into z from file_size where node_id=x and type=y;
end;

create or replace 
procedure countFolder(a in varchar2) is node_id number;localname varchar2(255);num number;d sys_refcursor;
begin
open d for 
  select child_node_id,qname_localname into node_id,localname from alf_child_assoc where ff=a;
loop 
  fetch d into node_id,localname;exit when d%notfound;
--调用selectFolder--
  selectFolder(node_id,a,num); 
  dbms_output.put_line(localname
------解决方案--------------------
'  '
------解决方案--------------------
num);
end loop;
end;


我在java中想调用countFolder这个过程,想得到包含localname和num两列的结果集,countFolder中应该怎么改?

加两个OUT 参数,将想要的值通过out 参数传出去
------解决方案--------------------
引用:
Quote: 引用:

open d for   select child_node_id,qname_localname into node_id,localname,这里不需要into, 加out参数 v_ret传出去
 循环内改下:v_ret := v_ret 
------解决方案--------------------
 localname
------解决方案--------------------
'  '
------解决方案--------------------
selectFolder(node_id,a,num)
------解决方案--------------------
','; end loop;
v_ret :=  rtrim(v_ret,',');
当然 这样你需要在java里面分解了,或者你可以定义个type 表类型

十分感谢,这是一种办法,还有没有跟直接一点,能直接返回一个结果集的?
那就是定义返回表类型的type啊