用户是system,有足够的权限
--Create table weekwinnerList
--(
--  users_id INTEGER not null PRIMARY KEY,
--  phone_number varchar(11),
--  add_points int,
--  week_order int,
--  area varchar(5),
--  audit_result varchar(10),
--  res varchar(500),
--  answer_time date
--);alter session set nls_date_format = 'yyyy-mm-dd';Create or Replace Procedure  timeTest
(t1 in char(10),t2 in char(10))
as
begin
     OPEN CUR FOR
     select users_id
     from weekwinnerlist ,phone_number ,add_points
     where (answer_time between To_Date(t1,'YYYY-MM-DD') and To_Date(t2,'YYYY-MM-DD'));
end timeTest
报错如下:BEGIN timeTest('2009-04-01','2009-04-30'); END;      *第 1 行出现错误: 
ORA-06550: 第 1 行, 第 7 列: 
PLS-00905: 对象 SYSTEM.TIMETEST 无效 
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored 

解决方案 »

  1.   

    我是菜鸟呢   能具体点吗     csuxp2008
      

  2.   

    把timeTest编译一下,看由没有错误。可能是这个procedure的相关对象由过修改,已经失效了。
      

  3.   

    select users_id
         from weekwinnerlist,phone_number ,add_points
     此处为 发帖出错     phone_number ,add_points这是字段
      

  4.   

    创建timeTest是   有警告提示警告: 创建的过程带有编译错误
      

  5.   

    它可以执行  前天建的存储过程exec CreateTempTable('tttt','(a1   int,a2   varchar(2))'); 
      

  6.   

    set serveroutput on
    -- 编译你的存储过程show err
      

  7.   


    有时,这个procedure依赖的对象已经改变了,比如表删除了,表结构改了,以前可以编译的,现在也就编译不了了,这个procedure也就无效了,调用的时候也就出错了。像你这里描述的,procedure创建都有编译错误,怎么能正确执行了。你可以在编译一下,如果提示错误的话。运行SQL>show errors;就可以看到错误的提示信息了。
      

  8.   

    show errors; 如下  这是什么问题啊.....    谢谢楼上的两位兄弟...PROCEDURE TIMETEST 出现错误: LINE/COL  ERROR  
    2/12  PLS-00103: 出现符号 "("在需要下列之一时: := ) , default varying character large 符号 ":=" 被替换为 "(" 后继续。  
    2/27  PLS-00103: 出现符号 "("在需要下列之一时: := ) , default varying character large 符号 ":=" 被替换为 "(" 后继续。  
      

  9.   

    (t1 in char(10),t2 in char(10))这里错了参数里只写类型,不写长度(t1 in char,t2 in char)哎呀,开始还没有注意叻。原来是自己本身错叻。你应该由修改过这个procecure吧在其成功运行以后。
      

  10.   

    inthirties  兄弟    我现在在学oracle,对oracle的操作都是按照以前mssql来的(变量,sql语法,函数,存储过程),所以出现了上面的情况。看了几张帖子,
    是不是在oracle中从存储过程中select到的记录必须保存到变量或者表里面啊,那这样是不是很麻烦呢,因为在存储过程中直接select的话  show error提示  缺少into做如下更改,没有报错
    先建一张与之一样的的表weekwinnerList2Create or Replace Procedure  timeTest
    (t1 in char,t2 in char)
    as
    begin
         insert into weekwinnerList2  select * 
         from weekwinnerlist1
         where answer_time between To_Date(t1,'YYYY-MM-DD') 
               and To_Date(t2,'YYYY-MM-DD');
    end timeTest;