PL/SQL: ORA-00942: la tabla o vista no existe

Buen dia

 

Tengo este script que puedo ejecutar sin ningun problema desde editor de toad.

Sin embargo al ponerlo dentro de un procedimiento almacenado marca el error

PL/SQL: ORA-00942: la tabla o vista no existe

en el renglon donde consulto la vista:  sys.dba_objects

 

Este es el script.

 

 PROCEDURE  COMPILA_PAQUETES  
  IS
      lpaqdef       VARCHAR(100);
      lpaqbody      VARCHAR(100);
      lcursor       sys_refcursor;
      lrowcount     number(5);
      G_MSG          VARCHAR2(250);
     
      CURSOR paquetes_cur   IS
              select  dbo.owner, dbo.object_type, dbo.object_name, dbo.status,
                    'alter package '||dbo.owner||'.'||dbo.object_name||' compile ' as compila_pkgdef,
                    'alter package '||dbo.owner||'.'||dbo.object_name||' compile body' as compila_pkdbody
                from  sys.dba_objects  dbo
                where    ( dbo.status='INVALID'  and  dbo.object_type like '%PACKAGE BODY%')
                order by  dbo.owner,  dbo.object_type, dbo.object_name, dbo.status;
 
        row_paquetes   paquetes_cur%ROWTYPE;
           
  BEGIN

         OPEN paquetes_cur;               
         lrowcount :=  paquetes_cur%ROWCOUNT;
          G_MSG := lrowcount || ' <-- Paquetes descompilados: ' ;
         DBMS_OUTPUT.PUT_LINE(G_MSG);        
         LOOP
                FETCH paquetes_cur INTO row_paquetes;
                    EXIT WHEN paquetes_cur%NOTFOUND;

                G_MSG :=  'P > ' || row_paquetes.owner || '.' || row_paquetes.object_name;
                DBMS_OUTPUT.PUT_LINE(G_MSG);
               
                G_MSG := row_paquetes.compila_pkdbody;

                BEGIN
                    EXECUTE IMMEDIATE G_MSG;
                EXCEPTION
                        WHEN OTHERS THEN  -- handles all other errors
                            G_MSG := 'ERROR: ' || SQLCODE || '-' || SQLERRM ;
                            DBMS_OUTPUT.PUT_LINE(G_MSG);
                END;                                   
               DBMS_OUTPUT.PUT_LINE(chr(10));
          
         END LOOP;

        CLOSE paquetes_cur;
  END COMPILA_PAQUETES;

 

Alguna ayuda por favor.