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

大家看看我的这么“过程”为什么是invalid,急!

楼主sea_maid(海心)2003-08-02 10:45:30 在 Oracle / 基础和管理 提问

CREATE   OR   REPLACE     PROCEDURE   "JC"."PROCEDURE_CURRENT"              
          (coltime_in   in   varchar2,   userid_in   in   varchar2)  
  as  
  begin  
      delete   from   temp_current;  
      commit;  
                   
      insert   into   temp_current    
      select   *   from   ccurrent3    
      where   userid   =   userid_in   and  
                  to_char(coldate,'yymmdd')   =   coldate_in;      
      commit;  
   
       
  end; 问题点数:50、回复次数:14Top

1 楼sea_maid(海心)回复于 2003-08-02 10:45:55 得分 0

在线等!Top

2 楼sea_maid(海心)回复于 2003-08-02 10:49:23 得分 0

这两条语句单独在sqlplus里面运行都没有问题。  
   
  up!Top

3 楼kerisyml(魂之利刃)回复于 2003-08-02 10:55:36 得分 10

在存储过程中作这些语句需要用动态sql来执行  
  如str!='delete   from   temp_current';  
  EXECUTE   IMMEDIATE   str;  
   
  以下的类似,你可以查查动态sqlTop

4 楼sea_maid(海心)回复于 2003-08-02 11:31:15 得分 0

那么您能不能给个例子,  
  我这么“过程”应该怎么写?  
   
  先谢了!Top

5 楼gladness(gladness)回复于 2003-08-02 12:02:50 得分 0

感觉把双引号去掉,前面的JC也可以去掉  
  CREATE   OR   REPLACE   PROCEDURE   PROCEDURE_CURRENT  
  后面不变Top

6 楼beckhambobo(beckham)回复于 2003-08-02 12:42:59 得分 5

coldate_in这个从哪来的?参数没有定义Top

7 楼sea_maid(海心)回复于 2003-08-02 12:49:26 得分 0

CREATE   OR   REPLACE     PROCEDURE   PRO_TEMP_CURRENT     (  
      coltime_in   in   varchar2,    
      userid_in   in   varchar2     )  
       
  as  
      v_cursorID   integer;  
      v_insertstmt   varchar2(100);  
   
  begin  
      v_cursorID   :=   DBMS_SQL.OPEN_CURSOR;  
       
      v_insertstmt   :=    
                    'insert   into   temp_current   select   *   from   ccurrent3    
                          where   userid   =   :   uin   and  
                                      to_char(coldate,''yymmdd'')   =   :   colin';  
       
      DBMS_SQL.PARSE   (v_cursorID,   v_insertstmt,   DBMS_SQL.V7);  
       
      DBMS_SQL.BIND_VARIABLE   (v_cursorID,   ':   uin',   userid_in);  
       
      DBMS_SQL.BIND_VARIABLE   (v_cursorID,   ':   colin',   coltime_in);  
       
      DBMS_SQL.EXECUTE   (v_cursorID);  
       
      DBME_SQL.CLOSE_CURSOR   (v_cursorID);  
       
  exception  
      when   others   then  
          DBMS_SQL.CLOSE_CURSOR   (v_cursorID);  
          raise;  
   
  end;          
   
  我写成这样还是invalid,为什么?请各位指点!  
  Top

8 楼Michaelyfj(星星还是那颗星星)回复于 2003-08-02 13:13:01 得分 5

重新在SQL/PLUS中编译,用show   err查看哪行错误,错误信息是什么?Top

9 楼beckhambobo(beckham)回复于 2003-08-02 13:42:55 得分 10

CREATE   OR   REPLACE     PROCEDURE   PROCEDURE_CURRENT(coltime_in   in   varchar2,   userid_in   in   varchar2)  
  as  
  begin  
      delete   from   temp_current;  
      insert   into   temp_current    
      (select   *   from   ccurrent3    
      where   userid   =   userid_in   and  
                  to_char(coldate,'yymmdd')   =coltime_in);      
   
  end;  
  Top

10 楼shuipipi(水皮皮)回复于 2003-08-02 14:06:18 得分 5

同意波波的!  
   
  泥的过程里面把一个变量名写错了:【   coltime_in   §   coldate_in   】Top

11 楼nbnasom(阿飞)回复于 2003-08-02 14:48:24 得分 10

CREATE   OR   REPLACE     PROCEDURE   JC.PROCEDURE_CURRENT              
          (coldate_in   in   varchar2,   userid_in   in   varchar2)  
  as  
  ls_sql   varchar2(1000);  
  begin  
      ls_sql   :=   'delete   from   temp_current';  
      EXECUTE   IMMEDIATE   ls_sql;  
      commit;  
                   
      insert   into   temp_current    
      select   *   from   ccurrent3    
      where   userid   =   userid_in   and  
                  to_char(coldate,'yymmdd')   =   coldate_in;      
      commit;  
     
  end;  
  /Top

12 楼David1289(David)回复于 2003-08-02 15:17:19 得分 5

coltime_in   in   varchar2  
  和  
  coldate_in  
  ?  
   
  Top

13 楼sea_maid(海心)回复于 2003-08-02 15:23:03 得分 0

CREATE   OR   REPLACE     PROCEDURE   "JC"."PROCEDURE_CURRENT"              
          (coltime_in   in   varchar2,   userid_in   in   varchar2)  
  as  
  begin  
      delete   from   temp_current;  
      commit;  
                   
      insert   into   temp_current    
      select   *   from   ccurrent3    
      where   userid   =   userid_in   and  
                  to_char(coldate,'yymmdd')   =   coldate_in;      
      commit;  
   
       
  end;  
       
  还是这么莫名其妙好了,哈哈!Top

14 楼sea_maid(海心)回复于 2003-08-02 15:26:14 得分 0

变量名错了,不好意思     :(Top

相关问题

  • 为什么编译过程中总出现错误????(急)
  • 急!!为什么这个存储过程不能调用?
  • 请问为什么我在 oracle 写的 存储过程都是 invalid 要如何才能改为 valid 呢
  • 【请问】存储过程本来是VALID,为什么运行后从VALID变成INVALID
  • 在存储过程中应该能drop table吧?为什么这个简单的过程编译无效,急
  • 急!!!为什么asp不能得到从存储过程中返回的值?
  • open存储过程时,出现EDBEngineError,Invalid Parameter错误,急!
  • 分布式怎么这么麻烦啊,我想用local的存储过程调用remote的存储过程,为什么总出错啊???????急急急
  • 为什么不行?关于WindowProc过程。
  • 为什么存储过程不成功???

关键词

  • dbms
  • sql
  • coldate
  • coltime
  • cursorid
  • userid
  • varchar2
  • yymmdd
  • asbegin
  • insertstmt

得分解答快速导航

  • 帖主:sea_maid
  • kerisyml
  • beckhambobo
  • Michaelyfj
  • beckhambobo
  • shuipipi
  • nbnasom
  • David1289

相关链接

  • Oracle类图书

广告也精彩

反馈

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