Offrimi un caffè o una birra!

Feed RSS

feed image


> Forex 

 scommesse sportive
Funzioni scalari in SQL Server PDF Stampa E-mail
Valutazione attuale: / 7
ScarsoOttimo 

SQL Server supporta diverse tipologie di funzioni, chiamate anche UDF (User Defined Functions). La più "semplice" delle funzioni di SQL Server è la funzione scalare. Ma che cosa significa "funzione scalare"?

Detto in parole povere, una funzione scalare è una funzione che restituisce sempre un singolo valore scalare. Quindi, comunque la scriviamo, ci restituirà sempre un solo valore.
La funzione scalare può restituire qualsiasi tipo dato supportato da SQL Server (tranne BLOB,  timestamp, cursor e table.)

Vediamo nel dettaglio come scrivere una funzione scalare con un semplice esempio...

Ipotizziamo di avere una tabella Vendite.DettaglioOrdini contenente record per gli ordini della nostra azienda. Per ogni record abbiamo i campi CodiceProdotto, NomeProdotto e Quantita.
Vogliamo scrivere una semplice funzione che per ogni prodotto restituisca il totale delle quantità vendute.

 

Ora, notiamo alcune caratteristiche della funzione scalare:

  1. La funzione scalare ha (solitamente) uno o più parametri e restituisce un valore "scalare" tramite l'istruzione RETURNS nella sua definizione.
  2. Il "corpo" della funzione è racchiuso in un blocco "BEGIN....END"
  3. La funzione al suo interno ci restituisice un valore scalare con l'istruzione RETURN (non RETURNS, che invece va nella definizione della funzione stessa)

Esempio (funziona in SQL Server 2000, 2005 e 2008):

CREATE FUNCTION Vendite.SommaVenduto (@CodProdotto int) RETURNS int
AS
BEGIN
    DECLARE @ret int       --dichiariamo una variabile per il risultato
    SELECT @ret=sum(Quantita)        --valorizziamo la variabile (un solo valore)
    FROM Vendite.DettaglioOrdini where CodiceProdotto =@CodProdotto

        if (@ret is null)
            set @ret=0      
--la variabile è stata definita come int perciò dobbiamo prevedere
--il caso in cui possa valere NULL e portarla a 0  

    RETURN @ret    --restituiamo il risultato

END

 

Per "chiamare" la funzione la potremo eseguire ad esempio in una SELECT come nell'esempio seguente:

 

SELECT CodiceProdotto, NomeProdotto, Vendite.SommaVenduto(CodiceProdotto) as Totale FROM Vendite.DettaglioOrdini

 

 




Aggiungi ai siti di Social Bookmarking
Digg! Reddit! Del.icio.us! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
 

Aggiungi commento

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:
Bold Italico Sottolineato Quota


Codice di sicurezza
Aggiorna