Wir müssen ein Umschreiben der Abfrage mit einer Bindevariablen implementieren, da wir den Quellcode der Webanwendung nicht ändern können. Beispiel:Wie verwende ich Oracle DBMS_ADVANCED_REWRITE mit Bindevariable?
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;
Der obige Befehl in Fehlern führen wird, weil es eine Variable binden ist:
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.
ich here lese, dass es eine Arbeit um, aber ich kann einfach nicht das Dokument überall online finden.
Können Sie mir bitte sagen, worum es bei der Arbeit geht?