in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

le user defined functions non ammettono parametri facoltativi?

Last post 02-02-2012 12.28 by lucazav. 1 replies.
Page 1 of 1 (2 items)
Sort Posts: Previous Next
  • 02-02-2012 11.55

    • massimog
    • Top 75 Contributor
    • Joined on 06-04-2007
    • Posts 20
    • Points 340

    le user defined functions non ammettono parametri facoltativi?

    Ciao a tutti, in un database ho una UDF di cui speravo di poterne estendere le funzionalità aggiungendo un parametro facoltativo.
    Si tratta di una funzione che accetta già un argomento di tipo integer; il mio obiettivo era aggiungerne un secondo, sempre integer, con valore di default 0.
    Questo per evitare di dover andarmi a modificare a ritroso tutti i posti in cui questa funzione viene già richiamata, e nello stesso tempo evitare di creare una nuova funzione tutto sommato ridondante.

    Grosso modo volevo fare questo:


    ALTER FUNCTION [dbo].[Fuzione] (
        @parametro1 int,
        @parametro2 int = 0
    )
    RETURNS varchar(max)
    AS

    BEGIN
        IF @parametro2 = 0
            esegui la query già presente da prima del nuovo parametro
        ELSE
            esegui una query diversa che utilizza sia @parametro1 che @parametro2
     
    END


    L'esecuzione della ALTER va a buon fine, e questo lascerebbe ben sperare, ma poi di fatto se la funzione viene richiamata con un solo argomento restituisce l'errore "Numero di argomenti insufficiente".


    Dove sbaglio, forse gli argomenti facoltativi non sono supportati? Strano allora che il parser lasci passare una ALTER che contiene un errore.
    Grazie.

    • Post Points: 20
  • 02-02-2012 12.28 In reply to

    • lucazav
    • Top 25 Contributor
      Male
    • Joined on 06-04-2007
    • Lodi (LO)
    • Posts 98
    • Points 1.060

    Re: le user defined functions non ammettono parametri facoltativi?

    In SQL Server devi comunque richiamare la funzione con due parametri, utilizzando la parola chiave DEFAULT per quello opzionale: select dbo.MyFunction(@MyParameter, DEFAULT) Ciao!
    Luca Zavarella
    Business Intelligence Specialist - SolidQ Italia
    Business Intelligence MCTS & MCITP
    Blog: http://community.ugiss.org/blogs/lucazav
    • Post Points: 5
Page 1 of 1 (2 items)
(C) 2007 User Group Italiano di SQL Server