Abbiamo bisogno di implementare una riscrittura delle query con una variabile bind perché non abbiamo la possibilità di modificare il codice sorgente dell'applicazione web. Esempio:Come utilizzare Oracle DBMS_ADVANCED_REWRITE con la variabile bind?
BEGIN
SYS.DBMS_ADVANCED_REWRITE.declare_rewrite_equivalence (
name => 'test_rewrite2',
source_stmt => 'select COUNT(*) from ViewX where columnA = :1',
destination_stmt => 'select COUNT(*) from ViewY where columnA = :1',
validate => FALSE,
rewrite_mode => 'recursive');
END;
Il comando sopra si tradurrà in errore perché c'è una variabile di legatura:
30353. 00000 - "expression not supported for query rewrite"
*Cause: The SELECT clause referenced UID, USER, ROWNUM, SYSDATE,
CURRENT_TIMESTAMP, MAXVALUE, a sequence number, a bind variable,
correlation variable, a set result, a trigger return variable, a
parallel table queue column, collection iterator, a non-deterministic
date format token RR, etc.
*Action: Remove the offending expression or disable the REWRITE option on
the materialized view.
sto leggendo here che c'è un lavoro in giro, ma non riesco proprio a trovare il documento ovunque online.
Potrebbe dirmi per favore qual è il lavoro?