Qual è l'equivalente di funzioni e metodi in SQL?

4

In un linguaggio come C o Java, ci sono cose come funzioni / metodi per modulare e astrarre cose.

Cosa c'è in SQL, in particolare per Oracle?

Ho visto persone parlare dell'utilizzo delle viste per ridurre la complessità in vari blog, ma c'è solo così tanto che può essere fatto con una vista. (Ad esempio, una variabile di binding non può essere passata come parametro di runtime a una vista). In strumenti come Oracle Reports, la query a volte diventa molto complicata eseguendo diverse centinaia di righe.

Mi stavo chiedendo che tipo di tecniche le persone usano per gestire la complessità del loro SQL? Quali sono gli equivalenti di funzioni e metodi in SQL per impedire che SQL diventi estremamente complesso?

    
posta toddlermenot 08.10.2011 - 23:06
fonte

2 risposte

3

Ho trovato utili espressioni di tabelle comuni (cte) per ridurre sia la dimensione che la complessità, oltre a rendere la query più leggibile. I risultati temporanei (tabelle temporanee e così via) possono essere una benedizione mista, così come le funzioni definite dall'utente. Possono certamente rendere il codice più leggibile, ma possono avere un impatto sulle prestazioni (non che l'impatto sia sempre negativo, ma è qualcosa a cui prestare attenzione).

    
risposta data 08.10.2011 - 23:21
fonte
3

PL-SQL supporta funzioni definite dall'utente. È possibile utilizzare questo per riutilizzare alcune logiche comuni con le query. Tuttavia, ci sono penalità significative in termini di prestazioni per fare ciò, poiché le UDF nascondono gli indici dalla query. La maggior parte delle volte, è meglio scrivere nuovamente la logica della query.

Un'altra opzione è usare una colonna calcolata. Facciamo alcune (non tutte) delle stesse cose di una funzione definita dall'utente scalare, ma è più indicizzabile.

    
risposta data 08.10.2011 - 23:16
fonte

Leggi altre domande sui tag