exec sys.dbms_advanced_rewrite.drop_rewrite_equivalence('ejemplo');
exec sys.dbms_advanced_rewrite.declare_rewrite_equivalence ( -
name => 'ejemplo', -
source_stmt=> q'[select columna1, columna2 from tablaA where columna1 like 'ABCD%' ]', -
destination_stmt=> q'[select columna1, columna2 from tablaB where columna3 = 'ABCD' ]', -
validate => false, -
rewrite_mode=>'TEXT_MATCH');
Vista donde podemos ver la equivalencia creada: DBA_REWRITE_EQUIVALENCES
ALTER SESSION SET QUERY_REWRITE_ENABLED=FORCE;
ALTER SESSION SET QUERY_REWRITE_INTEGRITY=TRUSTED;
Así cuando ejecutemos :
select columna1, columna2 from tablaA where columna1 like 'ABCD%'
Realmente se ejecutará:
select columna1, columna2 from tablaB where columna3 = 'ABCD'
Útil para situaciones en las que no se puede modificar el código de la aplicación, y el resto de opciones no fuciona (SQL_profiles, hints, parámetros, etc).
IMPORTANTE: No admite el uso de variables BIND, por lo que su ámbito de actuación está limitado a sentencias que no hacen uso de variables bind.
name => 'ejemplo', -
source_stmt=> q'[select columna1, columna2 from tablaA where columna1 like 'ABCD%' ]', -
destination_stmt=> q'[select columna1, columna2 from tablaB where columna3 = 'ABCD' ]', -
validate => false, -
rewrite_mode=>'TEXT_MATCH');
Vista donde podemos ver la equivalencia creada: DBA_REWRITE_EQUIVALENCES
ALTER SESSION SET QUERY_REWRITE_ENABLED=FORCE;
ALTER SESSION SET QUERY_REWRITE_INTEGRITY=TRUSTED;
Así cuando ejecutemos :
select columna1, columna2 from tablaA where columna1 like 'ABCD%'
Realmente se ejecutará:
select columna1, columna2 from tablaB where columna3 = 'ABCD'
Útil para situaciones en las que no se puede modificar el código de la aplicación, y el resto de opciones no fuciona (SQL_profiles, hints, parámetros, etc).
IMPORTANTE: No admite el uso de variables BIND, por lo que su ámbito de actuación está limitado a sentencias que no hacen uso de variables bind.
No hay comentarios:
Publicar un comentario