oracle 的procedure,那位大虾救救我

flowerofwind 2001-10-15 03:31:48
我在solaris 2.7下oracle 8i的sqlplus环境中创建如下procedure
create or replace procedure test_proc test_proc()
AS
BEGIN
select name from test1;
return 0;
END test_proc;
创建后有编译错误,我用show errors 现实错误信息如下:
1/21 PLS-00103: Encountered the symbol "TEST_PROC" when expecting one
of the following:
( ; is with authid deterministic parallel_enable as compress
compiled wrapped

...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowerofwind 2001-10-15
  • 打赏
  • 举报
回复
谢谢二位的回答,我刚接触oracle,以后多多帮忙,分已经给出,再次谢谢你们
yaanzy 2001-10-15
  • 打赏
  • 举报
回复
呵呵,你的过程名怎么取了两个!
而且如果没有参数,不要加(),
过程中的select语句中要加into语句
KingSunSha 2001-10-15
  • 打赏
  • 举报
回复
1. 第一行有两个test_proc, 不知道为什么
2. 如果不带参数,不允许用()
3. 不能直接用SELECT ...FROM...,必须用SELECT ... INTO ... FROM ...
4. RETURN只能用于函数,不能用户存储过程.

如果你想要的是通过这个过程通过ID返回单一的NAME的话,可以这么做:
create or replace procedure test_proc(p_id number, p_name out varchar2)
AS
BEGIN
select name into p_name
from test1
WHERE ID = p_id;
--return 0;
END test_proc;

如果你要的是返回一个纪录集的话, 那就复杂的多. 详细的方法见:
http://www.vbip.com/books/1861001789/chapter_1789_09.asp

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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