首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

存储过程如何通过游标返回一个结果集

2014-01-28 
--创建存储过程 create or replace procedure ppp(pout temp%rowtype) is cursor a is select * from temp

--创建存储过程
create or replace procedure ppp(p  out temp%rowtype)
is
cursor a is select * from temp where tid=1;
begin
  open a;
  fetch a into p;
  close a;
end;

--调用
declare
  one temp%rowtype;
begin
  call ppp(one);
  dbms_output.put_line(one.tid);
  dbms_output.put_line(one.tname);
end;

(1)我想通过这个存储过程返回一行数据,可老是有报错,以上语句错哪儿了?如果想得到返回的一行数据应该怎么做?
(2)如何通过游标返回一个结果集
  需要具体的代码。

------解决方法--------------------------------------------------------
call ppp(one);

去掉call

结果集用REFCURSOR返回就可以了。
------解决方法--------------------------------------------------------

set serveroutput on;
--调用
declare
  one temp%rowtype;
begin
  ppp(one);
  dbms_output.put_line(one.tid);
  dbms_output.put_line(one.tname);
end;

------解决方法--------------------------------------------------------
(1)我想通过这个存储过程返回一行数据,可老是有报错,以上语句错哪儿了?如果想得到返回的一行数据应该怎么做?
解:call ppp(one); 调用的时候去掉call 执行使用ppp(one)

(2)如何通过游标返回一个结果集?
在sqlplus中建立如下的内容:
1、程序包

SQL> create or replace package types
  2  as
  3  type cursorType is ref cursor;
  4  end;
  5  /

程序包已创建。

2、函数
SQL> create or replace function sp_ListEmp return types.cursortype
  2  as
  3  l_cursor  types.cursorType;
  4  begin
  5  open l_cursor for select id, title from cf_news order by id;--表的名字
  6  return l_cursor;
  7  end;
  8  /

函数已创建。

3、过程

SQL> create or replace procedure getemps( p_cursor in out types.cursorType )
  2  as
  3  begin
  4  open p_cursor for select id, title from cf_news order by id;--表的名字
  5  end;
  6  /

过程已创建。

        

热点排行