CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

一个oracle的存储过程,如何调用成功?

楼主gsoft(xiaoxiao)2004-12-03 12:59:32 在 Oracle / 基础和管理 提问

过程定义如下:  
  CREATE   OR   REPLACE     PROCEDURE   "KBMANAGER"."COUNT_NUM"         (in_sex    
          in   persons.sex%type,   out_num   out   NUMBER)  
    as  
  begin    
        if   in_sex   =   'm'   then  
        select   count(sex)   into   out_num  
        from   persons  
        where   sex='m';  
        else    
        select   count(sex)   into   out_num  
        from   persons  
        where   sex='w';  
        end   if;  
  end   COUNT_NUM;  
  编译已通过。  
   
   
  我在调用时总提示我没有声明变量,不知道错哪里?  
  SQL>variable   man_num   number;  
  SQL>exec   count_num('m',man_num);  
  SQL>print   man_num;  
  SQL>/  
  提示如下:  
  BEGIN   count_num('m',man_num);   END;  
                                          *  
  ERROR   位于第   1   行:  
  ORA-06550:   第   1   行,   第   21   列:  
  PLS-00201:   必须说明标识符   'MAN_NUM'  
  ORA-06550:   第   1   行,   第   7   列:  
  PL/SQL:   Statement   ignored  
   
        MAN_NUM  
  ----------  
   
  如何调用才能成功? 问题点数:20、回复次数:13Top

1 楼gsoft(xiaoxiao)回复于 2004-12-03 13:00:51 得分 0

我调用之前都已经有  
  varialble   man_num   number;了  
  怎么还说没有说明呢?                             PLS-00201:   必须说明标识符   'MAN_NUM'Top

2 楼gsoft(xiaoxiao)回复于 2004-12-03 13:01:27 得分 0

来帮忙呀啊Top

3 楼gsoft(xiaoxiao)回复于 2004-12-03 13:02:17 得分 0

帮忙Top

4 楼GerryYang(轻尘)回复于 2004-12-03 13:13:40 得分 0

declare  
  man_num   number;  
  begin  
  exec   count_num('m',man_num);  
  end;  
  /  
  Top

5 楼qiaozhiwei(乔)回复于 2004-12-03 13:21:09 得分 0

试试这个:  
  DECLARE  
  out_num   out   NUMBER;  
  BEGIN  
   
  --   Now   call   the   stored   program  
      count_num('m',out_num);  
   
  --   Output   the   results  
      dbms_output.put_line(SubStr('out_num   =   '||to_char(out_num),1,255));  
   
      COMMIT;  
  EXCEPTION  
  WHEN   OTHERS   THEN  
      dbms_output.put_line('Error   '||TO_CHAR(SQLCODE)||':   '||SQLERRM);  
  RAISE;  
  END;Top

6 楼gsoft(xiaoxiao)回复于 2004-12-03 13:24:19 得分 0

TO   :   GerryYang(轻尘)    
  declare  
  man_num   number;  
  begin  
  exec   count_num('m',man_num);  
  end;  
  提示如下:  
  exec   count_num('m',man_num);  
            *  
  ERROR   位于第   4   行:  
  ORA-06550:   第   4   行,   第   6   列:  
  PLS-00103:   出现符号   "COUNT_NUM"在需要下列之一时:  
  :=.(@%;  
  符号   ":="   被替换为   "COUNT_NUM"   后继续。  
   
   
  Top

7 楼gsoft(xiaoxiao)回复于 2004-12-03 13:27:20 得分 0

TO   :   qiaozhiwei(乔)    
  还是不行呀  
  SQL>   DECLARE  
      2     out_num   out   NUMBER;  
      3     BEGIN  
      4      
      5     --   Now   call   the   stored   program  
      6         count_num('m',out_num);  
      7      
      8     --   Output   the   results  
      9         dbms_output.put_line(SubStr('out_num   =   '||to_char(out_num),1,255));  
    10      
    11         COMMIT;  
    12     EXCEPTION  
    13     WHEN   OTHERS   THEN  
    14         dbms_output.put_line('Error   '||TO_CHAR(SQLCODE)||':   '||SQLERRM);  
    15     RAISE;  
    16     END;  
    17     /  
  out_num   out   NUMBER;  
                          *  
  ERROR   位于第   2   行:  
  ORA-06550:   第   2   行,   第   13   列:  
  PLS-00103:   出现符号   "NUMBER"在需要下列之一时:  
  :=.(@%;notnullrange  
  defaultcharacter  
  符号   ":="   被替换为   "NUMBER"   后继续。  
  Top

8 楼nbnasom(阿飞)回复于 2004-12-03 13:32:39 得分 5

set   serverout   on  
  declare  
  man_num   number;  
  begin  
      count_num('m',man_num);  
      dbms_output.put_line('out_num   =   '||to_char(out_num))  
  end;  
  Top

9 楼CodeMagic(ErrorDetector)回复于 2004-12-03 13:39:19 得分 5

我在调用时总提示我没有声明变量,不知道错哪里?  
  SQL>variable   man_num   number;  
  SQL>exec   count_num('m',man_num);  
  SQL>print   man_num;  
  SQL>/  
  提示如下:  
  BEGIN   count_num('m',man_num);   END;  
                                          *  
  ERROR   位于第   1   行:  
  ORA-06550:   第   1   行,   第   21   列:  
  PLS-00201:   必须说明标识符   'MAN_NUM'  
  ORA-06550:   第   1   行,   第   7   列:  
  PL/SQL:   Statement   ignored  
   
        MAN_NUM  
  ----------  
   
  如何调用才能成功?  
   
  =====================================  
  exec   count_num('m',:man_num);Top

10 楼qiaozhiwei(乔)回复于 2004-12-03 13:47:28 得分 5

DECLARE  
  out_num   NUMBER;  
  BEGIN  
   
  --   Now   call   the   stored   program  
      test('m',out_num);  
   
  --   Output   the   results  
      dbms_output.put_line('out_num   =   '||TO_CHAR(out_num));  
   
      COMMIT;  
  EXCEPTION  
  WHEN   OTHERS   THEN  
      dbms_output.put_line('Error   '||TO_CHAR(SQLCODE)||':   '||SQLERRM);  
  RAISE;  
  END;  
  /  
  Top

11 楼qiaozhiwei(乔)回复于 2004-12-03 13:48:21 得分 0

我测了一下,应该可以,前一个是定义写错了,不好意思,你试下再Top

12 楼ORARichard(没钱的日子......)回复于 2004-12-03 13:52:11 得分 5

declare  
  man_num   number;  
  begin  
  count_num('m',man_num);  
  end;  
  /  
  Top

13 楼gsoft(xiaoxiao)回复于 2004-12-03 14:51:29 得分 0

谢谢大家搞定了,你们真厉害,结了Top

相关问题

  • 在Oracle的存储过程中动态调用存储过程
  • Oracle调用Oracle存储过程?
  • jsp调用Oracle存储过程
  • pb如何调用oracle存储过程
  • 调用Oracle存储过程的问题???
  • vb调用oracle存储过程
  • 如何调用存储过程?请给BCB代码及ORACLE存储过程.
  • 存储过程调用存储过程
  • 关于在PB中动态调用ORACLE的存储过程
  • delphi中如何调用oracle中的存储过程和DBMS包?

关键词

  • dbms
  • program
  • num
  • 调用
  • man
  • declareman
  • sex
  • count
  • pl
  • 符号

得分解答快速导航

  • 帖主:gsoft
  • nbnasom
  • CodeMagic
  • qiaozhiwei
  • ORARichard

相关链接

  • Oracle类图书

广告也精彩

反馈

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