Saltar al contenido

Ejemplo de Force view Oracle

En esta entrada creamos una Force View, este tipo de vistas se suelen utilizan cuando alguna de las tablas no es accesible en algún momento.

En resumidas cuentas, si creamos una vista, Oracle mira los campos y las tablas de la vista para comprobar que existan todos los campos de la tabla. Y si no concuerdan por alguna razón, como que no existan, Oracle nos mostrará un bonito error.

Si no queremos que esto ocurra lo mejor es hacer una Force view que sencillamente se creará sin que Oracle verifique que existen esos campos.

Para hacer esto es tan sencillo como crear una vista normal y añadirle la palabra FORCE, quedaría así:

 
 
CREATE OR REPLACE FORCE VIEW VIEW_EXAMPLE
(
   UIDCIDI,
   UPDRENT,
   DTDINCA,
   HIDCIDI,
   UEDTACI,
   UPDBLAC,
   UCDDPLM,
   UUDIORG,
   DUDIALG,
   DCDUINC,
   DTDPDAN,
   DUDIORG,
   UCDDPET,
   UEDTDAN,
   DCDNTEN,
   UDDCUME,
   XCDMINC,
   XRDSPON
)
AS
   SELECT A.UIDNCIDI,
          A.UPDERENT, 
          A.DTDIINCA, 
          A.HIDNCIDI, 
          A.UEDSTACI, 
          A.UPDOBLAC, 
          D.UCDODPLM, 
          d.UUDNIORG, 
          D.DUDBIALG, 
          A.DCDAUINC, 
          E.DTDIPDAN, 
          A.DUDNIORG, 
          A.UCDODPET, 
          A.UEDSTDAN, 
          C.DCDONTEN, 
          A.UDDOCUME, 
          A.XCDOMINC, 
          A.XRDESPON
     FROM ATINCIDD A,
          ATLINCID B,
          ATPRUEBA C,
          ATPUREBB D,
          ATPURRRE E
    WHERE     A.CAMPO = B.CAMPO2(+)
          AND A.CAMPO3 = C.CAMPO3(+)
          AND A.CAMPO4 = D.CAMPO5(+)
          AND A.CAMPO6 = E.CAMPO7(+);
 
CREATE OR REPLACE PUBLIC SYNONYM VIEW_EXAMPLE FOR VIEW_EXAMPLE;
 
GRANT SELECT ON VIEW_EXAMPLE TO USUARIO_FINAL;

Si te ha sido útil el post, me podrías dar un +1 , ya sabes que a Google le entusiasman mucho. Gracias!