-
di solito le restrizioni DML riguardano solo le istruzioni di modifica (UPDATE, DELETE ...), quindi SELECT dovrebbe essere OK. Proverò a trovare una dichiarazione specifica da Oracle.
-
Le visualizzazioni sarebbero il tuo primo strumento per modulare le query di uso comune.
-
Le funzioni hanno uno svantaggio rispetto alle viste:se vengono chiamate da un altro SELECT non vengono eseguite nello stesso momento del SELECT principale. Ogni chiamata a SELECT è coerente, ma poiché SELECT si trova nel codice della funzione e non nell'SQL principale, è possibile che vengano restituiti risultati incoerenti. Questo non è possibile con le viste e la selezione secondaria:se un'istruzione grande chiama una vista, la vista viene creata nello stesso momento della query principale.
Aggiorna :in merito al tuo commento sulle query parametrizzate
È possibile creare viste parametrizzate, ovvero viste che dipendono dalle variabili impostate prima dell'esecuzione. Ecco un esempio su AskTom
mostrando come puoi farlo con userenv('client_info')
o dbms_session.set_context
.