oracle存储过程返回集合的问题

linsr 2004-08-09 02:30:11
例子调试没有通过,为什么,大家帮我看看:
create procedure list_early_deaths () return ref cursor as
declare
toesup ref cursor;
begin
open toesup for
SELECT poets.name, deaths.age
FROM poets, deaths
-- all entries in deaths are for poets.
-- but the table might become generic.
WHERE poets.id = deaths.mort_id
AND deaths.age < 60;
return toesup;
end;

错误提示:
Compilation errors for PROCEDURE ZKHX.LIST_EARLY_DEATHS

Error: PLS-00103: 出现符号 ")"在需要下列之一时:
<an identifier>
<a double-quoted delimited-identifier>current
Line: 1
Text: create procedure list_early_deaths() return ref cursor as
...全文
923 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyi8903 2004-08-28
  • 打赏
  • 举报
回复
up dinya2003(OK) and ggyy2002(我曾经是个高手)
liuyi8903 2004-08-10
  • 打赏
  • 举报
回复
qingqingfish 2004-08-10
  • 打赏
  • 举报
回复
function 包含return子句,function好像没有吧
ggyy2002 2004-08-09
  • 打赏
  • 举报
回复
定义包:
CREATE OR REPLACE PACKAGE "HOTEL_USER"."HOTEL_PACKET" as
TYPE myrctype IS REF CURSOR;

end;



定义过程:

CREATE OR REPLACE PROCEDURE "HOTEL_USER"."CT_GET_CPXM_LIST" (
p_rc out Hotel_Packet.myrctype
)
as
sqlstr varchar(500);

begin

sqlstr := 'select * from new_ct_cpxm';

OPEN p_rc FOR sqlstr;
end;
zhbname 2004-08-09
  • 打赏
  • 举报
回复
你這是用函數
ggyy2002 2004-08-09
  • 打赏
  • 举报
回复
客户端用的什么开发软件?
linsr 2004-08-09
  • 打赏
  • 举报
回复
急需帮助,加我QQ 304522028
linsr 2004-08-09
  • 打赏
  • 举报
回复
我的QQ 304522028
linsr 2004-08-09
  • 打赏
  • 举报
回复
plsqldev 开发工具
ggyy2002 2004-08-09
  • 打赏
  • 举报
回复
你用什么编程
linsr 2004-08-09
  • 打赏
  • 举报
回复
然后如何调用,返回的是什么?分数不够,可以再加,大家踊跃参加
linsr 2004-08-09
  • 打赏
  • 举报
回复
不行啊,提示错误信息:
Compilation errors for PROCEDURE ZKHX.LIST_EARLY_DEATHS

Error: PLS-00372: 在一个过程中,RETURN 语句无法包含表达式
Line: 9
Text: return toesup;

Error: PL/SQL: Statement ignored
Line: 9
Text: return toesup;
ineedtostudy 2004-08-09
  • 打赏
  • 举报
回复
在包头里预定义一个ref cursor类型,然后在存储过程里使用自己定义的类型就可以了
dinya2003 2004-08-09
  • 打赏
  • 举报
回复
--包头
create or replace package pkg_test
as
type myCursor is ref cursor;

end pkg_test;


create procedure list_early_deaths(refcursor_name out pkg_test.myCursor) as
toesup pkg_test.myCursor;
begin
open toesup for
SELECT poets.name, deaths.age
FROM poets, deaths
WHERE poets.id = deaths.mort_id
AND deaths.age < 60;
return toesup;
end;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧