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

No replies
Imagen de arzamm@yahoo.com
Joined: 24/06/2014
Puntos: 5

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.

 



 

  BI   |    CRM     |    CMS    |    Tendencias en software empresarial    |    Cloud computing  |    Software libre    |   Internet    |    Movilidad y apps