Oracle
 sql >> Database >  >> RDS >> Oracle

È consentito l'uso di SELECT all'interno di una funzione di tabella PL/SQL pipeline?

  1. 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.

  2. Le visualizzazioni sarebbero il tuo primo strumento per modulare le query di uso comune.

  3. 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 .