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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    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,为什么?请各位指点!
      

  5.   

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

  6.   

    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;
      

  7.   

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

  8.   

    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;
    /
      

  9.   

    coltime_in in varchar2

    coldate_in
      

  10.   

    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;
      
    还是这么莫名其妙好了,哈哈!