Forex 

 scommesse sportive
Offrimi un caffè o una birra!

Feed RSS

feed image
Funzioni scalari in SQL Server PDF Stampa E-mail
Valutazione attuale: / 8
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

N.B. Non sempre riesco a rispondere ai commenti, soprattutto per richieste di aiuto e problemi tecnici. Mi piacerebbe avere tempo di rispondere a tutti, ma siete tanti e il tempo purtroppo è poco...

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


Codice di sicurezza
Aggiorna