大家好!不知道有没有人遇到这样的问题:
建立好全文索引后,我想自己写个存储过程加入到job中,可是建立全文索引后,再建立存储过程老是报编译错误
存储过程如下:CREATE OR REPLACE PROCEDURE updateindex as
BEGIN
ctx_ddl.sync_index('fileindex'); 
END ;使用 show error命令后:如下提示:
PLS-00201: 必须说明标识符 'CTX_DDL'
PL/SQL: Statement ignored但直接执行 exec ctx_ddl.sync_index('fileindex'); 在pl/sql中是可以执行的!有谁遇到个如此问题没?请多多指教!

解决方案 »

  1.   

    在存储过程中执行它时,必须明确地为该用户授权。
    你可以用SYS或者SYSTEM登录,然后给它execute权
      

  2.   

    楼上的,我已经将登陆用户设置为DBA了,还需要设置其他权限么?
    但是我能够使用exec   ctx_ddl.sync_index('fileindex');执行成功,应该是有权限的啊!
      

  3.   

    CREATE   OR   REPLACE   PROCEDURE   updateindex   as 
    BEGIN 
    exec ctx_ddl.sync_index('fileindex');   
    END   ; 
      

  4.   

    试试
    CREATE       OR       REPLACE       PROCEDURE       updateindex       as   
    BEGIN   
    execute immediate   ctx_ddl.sync_index('fileindex');       
    END       ;   
      

  5.   

    楼上的:还是不行!我在sql/plus worksheet里面创建:
    CREATE OR REPLACE  PROCEDURE "DOCUSER"."UPDATEINDEX"    
       as
    BEGIN
     execute   immediate ctx_ddl.sync_index('fileindex');
     end  ;还是提示 :创建的过程带有编译错误
      

  6.   

    要想使用CTX_DDL 必须为使用者开通CTXSYS.CTX_DDL权限
    在oracle9i中可能必须用ctxsys用户登录,为用户开通权限。其他用户不可以。
    ctxsys可能是禁用的,需要用system登录将其启用并设置密码(alter user ctxsys identified by cobuyor_ctxsys)。
    用ctxsys用户登录后执行  grant execute on  ctx_ddl to <user>即可开通权限