Io non ho capito.
La cosa che chiedi si può già fare... usando riferimenti a variabili globali dentro le clausole where direttamente. Il loro contenuto verrà incorporato direttamente nella query, senza aggiugnere altro.
In alternativa puoi usare le funzioni SQLquery di sistema che ti permettono di eseguire una tua query arbitraria.
Cosa manca?
Tieni anche conto che "iniettare" direttamente codice SQL da programma non è così sicuro... i bug da SQL-injections nascono proprio da questo problema. InDe valida tutti i parametri prima di fornirli alle query, protegge il fatto che possa essere iniettato codice che può rendere una semplice query di lettura una query doppia costituita da una query di lettura SEGUITA da una cancellazione o modifica dei dati.
La funzionalità descritta sopra (della variabile globale) va usata con cautela perché se non controllata può portare ad effetti imprevisti.
E' questo che chiedevi?
(nota: riguardo alla where clause doppia con l'OR concordo con te... ci sono casi in cui il DB non è così smart e la query è più lenta del previsto... bisognerebbe analizzare meglio la cosa o, come hai fatto tu, gestire il "problema" via codice)