tanto in tanto incontro esempi in cui SELECT...INTO...FROM DUAL
viene utilizzato per chiamare una funzione - ad esempio:Usando `select` per chiamare una funzione
SELECT some_function INTO a_variable FROM DUAL;
è usato, al posto di
a_variable := some_function;
mio prendere su questo è che non è una buona pratica perché A) rende poco chiaro che una funzione viene invocata, e B) è inefficiente in quanto costringe una transizione dal motore PL/SQL al motore SQL (forse meno di un problema oggi).
Qualcuno può spiegare perché questo potrebbe essere stato fatto, ad es. era necessario all'inizio della codifica PL/SQL per poter richiamare una funzione? Il codice che sto guardando potrebbe risalire a Oracle 8.
Eventuali approfondimenti apprezzati.
Penso che versioni molto vecchie di Oracle (come Oracle 8 e 9), in realtà non supportano l'assegnazione con una funzione. –
Per quanto mi ricordo, la seconda sintassi è disponibile da 10g. Sei sicuro che sia eseguibile su 8i? –
@a_horse_with_no_name - So che 9i supporta l'assegnazione diretta dalle funzioni (ad esempio 'a_variable: = some_function;'). Ma 8i potrebbe non avere - Non ho mai dovuto lavorare con esso. Grazie! –