venerdì 11 settembre 2015

Funzioni con parametri in SQL Server che restituiscono tabelle

In Sql Server è possibile creare delle funzioni passandogli dei parametri a avere in ritorno una tabella.
Una specie di vista con parametri

La sintassi è
CREATE FUNCTION ( )
RETURN TABLE AS
RETURN

SELECT * FROM
WHERE =@Parametro
)

Nel mio caso specifico avevo bisogno di una vista che passandogli il magazzino e gli estremi delle date mi restituisse le giacenze del magazzino e del periodo di date indicato



CREATE FUNCTION dbo.VDgaTest (@Magazzino CHAR(3),@DaData CHAR(8), @AData CHAR(8))
RETURNS TABLE
AS
RETURN
(
     select ARTICOLO,
     round(sum ( 
     case 
      when INVENTARIO =  '+'  then QUANTITA
      when INVENTARIO =  '-'  then QUANTITA*-1 
      when CARICO =  '+'  then QUANTITA    
      when CARICO =  '-'  then QUANTITA*-1
      when ACARICO =  '+'  then QUANTITA  
      when ACARICO =  '-'  then QUANTITA*-1
      when SCARICO =  '-'  then QUANTITA
      when SCARICO =  '+'  then QUANTITA*-1 
      when ASCARICO =  '-'  then QUANTITA 
      when ASCARICO =  '+'  then QUANTITA*-1
     end),4) GIACENZA
    from MOVIMAG
    where 1=1
    and DATA>= @DaData 
    and DATA<= @AData 
    and TIPO <>  '..' 
    AND MAGAZZINO=@Magazzino
    group by ARTICOLO
)

La funzione si richiama semplicemente con un :
SELECT * FROM vDgaTest('000','20150101','20150831')


Nessun commento:

Posta un commento