Scopo
Specifica il testo che occorre sostituire nelle query eseguite su questo database. In questo modo è possibile sostituire in maniera generalizzata delle parti di query, ad esempio per far puntare una query ad un diverso database.
Sintassi
Database.AddQuerySubstitution(stringa da cercare, valore da inserire)
Argomenti
Stringa da cercare | Stringa da cercare nel testo della query |
Valore da inserire | Valore con cui sostituire la stringa trovata |
Esempio
// ***************
// Esegue la query
// ***************
public void QueryAnalyzer.Esegui()
{
// Imposto il tempo di timeout di esecuzione
NorthwindDB.Timeout := Dati.Timeout
//
// Applico tutte le sostituzioni
NorthwindDB.ClearQuerySubstitutions()
for each row
{
select
StringaDaCercareSostituzione := StringaDaCercare
ValoreDaInserireSostituzione := ValoreDaInserire
from
Sostituzioni // Tabella Master
//
record Sostituzione
string StringaDaCercare //
string ValoreDaInserire //
//
NorthwindDB.AddQuerySubstitution(Sostituzioni.StringaDaCercareSostituzione, Sostituzioni.
ValoreDaInserireSostituzione)
}
//
// Svuoto il risultato precedente
delete from Risultato
//
// Provo ad eseguire l'istruzione SQL
try
...
catch // L'esecuzione non è andata a buon fine
...
}
// Esegue la query
// ***************
public void QueryAnalyzer.Esegui()
{
// Imposto il tempo di timeout di esecuzione
NorthwindDB.Timeout := Dati.Timeout
//
// Applico tutte le sostituzioni
NorthwindDB.ClearQuerySubstitutions()
for each row
{
select
StringaDaCercareSostituzione := StringaDaCercare
ValoreDaInserireSostituzione := ValoreDaInserire
from
Sostituzioni // Tabella Master
//
record Sostituzione
string StringaDaCercare //
string ValoreDaInserire //
//
NorthwindDB.AddQuerySubstitution(Sostituzioni.StringaDaCercareSostituzione, Sostituzioni.
ValoreDaInserireSostituzione)
}
//
// Svuoto il risultato precedente
delete from Risultato
//
// Provo ad eseguire l'istruzione SQL
try
...
catch // L'esecuzione non è andata a buon fine
...
}
- L'aggiunta di una sostituzione ha effetto su tutte le prossime istruzioni SQL e viene annullata solo con una chiamata alla procedura ClearQuerySubstitutions. Solitamente le sostituzioni vengono impostate all'inizio della sessione, nell'evento Initialize o AfterLogin.
-
Un esempio di possibile utilizzo è il seguente: in una query si deve eseguire il join con una tabella contenuta in un altro database, in questo caso la from list della query potrebbe essere la seguente:
from Tabella A, §DB§.AltraTabella B
La parte di query §DB§ verrà sostituita prima dell'esecuzione con il nome del database in cui si trova AltraTabella tramite la procedura AddQuerySubstitution. - La sostituzione del testo della query avviene automaticamente, a meno delle query contenute nei PreparedStatement, per i quali è necessario usare esplicitamente la funzione ApplyQuerySubstitutions.
Ultima modifica: 23/03/2021 / Validità: da 7.0.3200