我的SQL是:
create or replace procedure crpdta.GetTmpData
is
begin
delete from crpdta.f4105_t;
commit;
insert into  crpdta.f4105_t 
select coitm,colitm,colotg,coledg,councs/10000 as councs,cocsin,from_jde_date(coupmj) as coupmj,couser,copid,cojobn,cotday,coccfl from 
proddta.f4105 where coledg='07';
commit;
end;但执行总报错:execute crpdta.GetTmpData;ORA-06550: 第 2 行, 第 14 列: 
PLS-00905: 对象 CRPDTA.GETTMPDATA 无效
ORA-06550: 第 2 行, 第 7 列: 
PL/SQL: Statement ignored请教各位大侠,我急的用.谢谢!
分不够再加.

解决方案 »

  1.   

    单独执行
    select coitm,colitm,colotg,coledg,councs/10000 as councs,cocsin,from_jde_date(coupmj) as coupmj,couser,copid,cojobn,cotday,coccfl from  
    proddta.f4105 where coledg='07';
    有错吗?
    你有用户proddta和crpdta的权限吗?
    语法没有问题
      

  2.   


    SQL> create table f4105_t as select * from emp where 1 = 0;create or replace function from_jde_date(a date) return date  is
    begin  
      return a;
    end from_jde_date;create or replace procedure GetTmpData
    is
    begin
    delete from f4105_t;
    commit;
    insert into f4105_t select empno as empno,'SMIth' ename,
    'Sal' job,null mgr,from_jde_date(sysdate),sal/12 as sal,
    null comm,20 deptno from emp where empno = '7788';
    commit;
    end;SQL> select * from f4105_t;
    结果:
    EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
    ----- ---------- --------- ----- ----------- --------- --------- ------
     7788 SMIth      Sal             2010-10-10     250.00               20
      

  3.   

    过程crpdta.GetTmpData没看出什么问题,不过执行的时候在SQLPLUS中是这样:
    begin
       crpdta.GetTmpData;
    end;或者 exec crpdta.GetTmpData;
      

  4.   

    怎么又发 
    你执行过程体中的
    insert into crpdta.f4105_t  
    select coitm,colitm,colotg,coledg,councs/10000 as councs,cocsin,from_jde_date(coupmj) as coupmj,couser,copid,cojobn,cotday,coccfl from  
    proddta.f4105 where coledg='07';
    看有问题没 
      

  5.   


    delete from crpdta.f4105_t;
    commit;
    换成EXECUTE IMMEDIATE 'TRUNCATE TABLE crpdta.f4105_t';
    多好,DDL效率高啊
      

  6.   

    单独执行每个sql语句试试呢?
      

  7.   

    执行下面的调试语句,并将结果粘贴出来看下,或者你自己通过提示信息就能解决了。SQL> alter procedure crpdta.GetTmpData compile;SQL> show error;