CREATE  OR  REPLACE    FUNCTION  test  
       return  char  is      
 jobLastTime  date;  
 jobNextTime  date;  
begin  
   select  last_date  into  jobLastTime  from  sys.dba_jobs  where  job='42';  
   return  to_char(jobLastTime,'yyyy');  
end test;  
/

解决方案 »

  1.   

    用show error;命令查看错误信息。贴出来。CREATE    OR    REPLACE        FUNCTION    test      
                 return    char    is              
     jobLastTime    date;      
     jobNextTime    date;      
    begin      
         select    last_date    into    jobLastTime    from    sys.dba_jobs    where    job='42' and rownum=1;      
         return    to_char(jobLastTime,'yyyy');      
    end  test;      
    /
      

  2.   

    警告: 创建的函数带有编译错误。FUNCTION TEST 出现错误:LINE/COL ERROR
    -------- -----------------------------------------------------------------
    6/4      PL/SQL: SQL Statement ignored
    6/52     PL/SQL: ORA-00942: 表或视图不存在
    8/3      PL/SQL: SQL Statement ignored
    8/46     PL/SQL: ORA-00942: 表或视图不存在
      

  3.   

    用户没有访问sys.dba_jobs的权限!
    connect sys/change_on_install
    grant select on dba_jobs to username;
      

  4.   

    多谢高手指点!问题解决了!
    不过我想问一下:
      我建的用户 me 我已经给它赋予了dba的角色,为什么 me 还没有访问sys.dba_jobs的权限?
    另外:
      我在grant select on dba_jobs to me;之前使用
        declare:
        jobLastTime date;
        begin
         select last_date into jobLastTime from sys.dba_jobs where  job='42';
        end;
      是没用出错的.只是把select last_date into jobLastTime from sys.dba_jobs where  job='42'放到存储过程,函数,触发器中使用就出错!
    为什么啊?