CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

请问这个存储过程哪错了,很急啊。100分,解决给分

楼主yuewh491(帅的惊动了党)2005-11-04 13:18:57 在 Oracle / 基础和管理 提问

CREATE   OR   REPLACE   PROCEDURE   DT_SELECT_CHEMICALLIST   (Rid   IN   NUMBER)   IS  
  BEGIN  
      select   *   from   CHEMICALLIST   where   id=Rid;  
  END   DT_SELECT_CHEMICALLIST; 问题点数:100、回复次数:9Top

1 楼yuewh491(帅的惊动了党)回复于 2005-11-04 13:21:46 得分 0

总报  
  警告:   创建的过程带有编译错误。  
  这个错Top

2 楼tjandy(双桅船)回复于 2005-11-04 13:27:57 得分 10

这个我也遇到公平,我当时把语句赋值给了一个字符串,大概是这样的  
  v_sql   varchar(100)  
  v_sql:='select   *   from     select   *   from   CHEMICALLIST   where   id='+RID;  
  然后再执行就可以了。(执行那个exec...忘了怎么写了,呵呵)Top

3 楼Alkeen()回复于 2005-11-04 13:32:34 得分 10

select语句没法在proc里跑  
  你要显示直接在query里跑好了  
  要使用或者要返回值就用cursor   或者   select   into  
  Top

4 楼wfeng7907(无风)回复于 2005-11-04 13:35:23 得分 10

CREATE   OR   REPLACE   PROCEDURE   DT_SELECT_CHEMICALLIST   (Rid   IN   NUMBER)   IS  
  BEGIN  
      select   *   from   CHEMICALLIST   where   id=Rid;  
  END   DT_SELECT_CHEMICALLIST;  
  不知道楼主这么做要达到什么目的?  
  在过程中要写成  
  类似于:  
  str   number;  
  execute   immediate   'select   xxx   from   CHEMICALLIST   where   id='||RID   into   str;  
  的形式   就可以了!Top

5 楼chenyunfan(云帆)回复于 2005-11-04 13:35:23 得分 70

你是想從存儲過程返回結果集嘛?  
  你的寫法在SQLSERVER中是可以的,但在Oracle中你只能返回一個引用的游標  
  具體寫法:  
  先建一個包  
  create   or   replace   package   packname   is    
  begin  
        type   dataset   is   ref   cursor  
  end   packname;    
  再建存儲過程  
  CREATE   OR   REPLACE   PROCEDURE   DT_SELECT_CHEMICALLIST   (Rid   IN   NUMBER,dataset   out   packname.dataset)   IS  
  BEGIN  
      open   dataset   for   select   *   from   CHEMICALLIST   where   id=Rid;  
  END   DT_SELECT_CHEMICALLIST;  
   
   
   
  Top

6 楼yuewh491(帅的惊动了党)回复于 2005-11-04 13:49:56 得分 0

你是想從存儲過程返回結果集嘛?  
  你的寫法在SQLSERVER中是可以的,但在Oracle中你只能返回一個引用的游標  
  具體寫法:  
  先建一個包  
  create   or   replace   package   packname   is    
  begin  
        type   dataset   is   ref   cursor  
  end   packname;    
  再建存儲過程  
  CREATE   OR   REPLACE   PROCEDURE   DT_SELECT_CHEMICALLIST   (Rid   IN   NUMBER,dataset   out   packname.dataset)   IS  
  BEGIN  
      open   dataset   for   select   *   from   CHEMICALLIST   where   id=Rid;  
  END   DT_SELECT_CHEMICALLIST;  
   
  ————————————————————————  
  然后我再调用存储过程就可以了是吗?Top

7 楼chenyunfan(云帆)回复于 2005-11-04 13:54:46 得分 0

是的Top

8 楼yuewh491(帅的惊动了党)回复于 2005-11-04 13:57:01 得分 0

create   or   replace   package   packname   is    
  begin  
        type   dataset   is   ref   cursor  
  end   packname;    
  建游标还报错啊  
   
  警告:   创建的过程带有编译错误。Top

9 楼yuewh491(帅的惊动了党)回复于 2005-11-04 14:27:52 得分 0

先结了Top

相关问题

  • 存储过程出错!!急!
  • 请帮忙看个这个存储过程错的哪,,急急!
  • 这条简单的存储过程错在哪里(急)
  • 不知道这个存储过程错在哪,急死了
  • 急救:请问该存储过程错在哪里?
  • 这个存储过程哪儿错了?
  • 这个存储过程错在哪里?
  • 存储过程的错误在哪里?
  • 存储过程语句哪里错了
  • 这个存储过程错在哪里?

关键词

  • chemicallist
  • packname
  • rid
  • isbegin
  • cursorend
  • 儲過程
  • dt
  • 寫法
  • 返回
  • dataset

得分解答快速导航

  • 帖主:yuewh491
  • tjandy
  • Alkeen
  • wfeng7907
  • chenyunfan

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo