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

Oracle存储过程如何返回数据集
create or replace procedure AA_SXJTEST is
  out_gg number(8);
begin
  select id into out_gg from t_gzgl_zxjr_list where id=423; --查出来的只有一条记录
  DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg);
end AA_SXJTEST;

--命令窗口去执行的话,我可以看到结果,如下
SQL> set serverout on;
SQL> exec AA_SXJTEST;
表的数据量为:423

--**************我想问的是***************
create or replace procedure AA_SXJTEST is
  out_gg ????; 
--如果用下面的查询的话,这里的参数应该定义成什么,然后我怎样才可以到命令窗口里去看到这个参数的结果
begin
  select id into out_gg from t_gzgl_zxjr_list; --查出来的是一个数据集
end AA_SXJTEST;

------解决方案--------------------
可以用游标输出
SQL code
create or replace procedure AA_SXJTEST is 
  out_gg number(8); 
  cursor v_cur is select id from t_gzgl_zxjr_list
begin 
  open v_cur;
  fetch v_cur into out_gg;
  while v_cur %found loop
    DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg); 
    fetch v_cur into out_gg;
  end loop;
  close v_cur;
end AA_SXJTEST;

------解决方案--------------------
引用楼主 suxujie 的帖子:
create or replace procedure AA_SXJTEST is
  out_gg number(8);
begin
  select id into out_gg from t_gzgl_zxjr_list where id=423; --查出来的只有一条记录
  DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg);
end AA_SXJTEST;

--命令窗口去执行的话,我可以看到结果,如下
SQL> set serverout on;
SQL> exec AA_SXJTEST;
表的数据量为:423

--**************我想问的是***************
create or replace…