in

UGISS Community

Il sito della community dello User Group Italiano di SQL Server

Problema con le funzioni scalari

Last post 07-30-2008 7.41 by dmauri. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • 07-29-2008 17.53

    Problema con le funzioni scalari

    Quando cerco chi assegnare delle variabili con il metodo Select ed ho piu di due funzioni nella stessa assegnazione l'esecuzione si blocca come in continua esecuzione. PS neanche il trace mi da soddisfazione

    Esempio

    Select @_var1 = (select dbo.funzione('var1')

            ,@_var2 = (select dbo.funzione('var2')

           ,@_var3 = (select dbo.funzione('var3')

     

    In particolare la funzione e' sempre la stessa cambia solo i parametri, PS la funzione ritorna un valore da una select (non mi da problemi di lock)

    in particolare la funzione ritorna un intero

    RETURN isnull((select campo1 from table1 where campo2 = var1),0)

    Filed under:
    • Post Points: 35
  • 07-29-2008 18.07 In reply to

    • lbenaglia
    • Top 25 Contributor
      Male
    • Joined on 05-14-2007
    • Vimercate (Milano)
    • Posts 79
    • Points 1.170

    Re: Problema con le funzioni scalari

    giupegiupe:

    Quando cerco chi assegnare delle variabili con il metodo Select ed ho piu di due funzioni nella stessa assegnazione l'esecuzione si blocca come in continua esecuzione. PS neanche il trace mi da soddisfazione

    Mmmmm... ho provato a scrivere questo esempio e non riscontro problemi:

    USE tempdb;
    GO

    CREATE FUNCTION dbo.ufn_GetContact
    (
    @ContactID 
    INT
    )
    RETURNS NVARCHAR(50
    )
    BEGIN
        RETURN
    (
            
    SELECT 
    FirstName
            
    FROM 
    AdventureWorks.Person.Contact
            
    WHERE ContactID 
    @ContactID
        
    );
    END
    GO

    DECLARE 
          
    @Contact1 NVARCHAR(50
    )
        , 
    @Contact2 NVARCHAR(50
    )
        , 
    @Contact3 NVARCHAR(50
    );

    SELECT 
          
    @Contact1 dbo.ufn_GetContact(1
    )
        , 
    @Contact2 dbo.ufn_GetContact(2
    )
        , 
    @Contact3 dbo.ufn_GetContact(3
    );

    SELECT
          
    @Contact1 AS 
    Contact1
        
    @Contact2 AS 
    Contact2
        
    @Contact3 AS Contact3
    ;

    /* Output:

    Contact1  Contact2  Contact3
    --------- --------- ---------
    Gustavo   Catherine Kim

    (1 row(s) affected)

    */

    DROP FUNCTION dbo.ufn_GetContact;
      

    Prova a confezionare un esempio completo che presenti l'anomalia...

    Ciao!

    Lorenzo Benaglia
    Microsoft MVP - SQL Server
    http://blogs.dotnethell.it/lorenzo
    http://italy.mvps.org
    • Post Points: 5
  • 07-30-2008 7.41 In reply to

    • dmauri
    • Top 10 Contributor
      Male
    • Joined on 05-14-2007
    • Novate Milanese
    • Posts 1.016
    • Points 13.110

    Re: Problema con le funzioni scalari

    La tua "table1" quanto è grossa?

    Ha provato a verificare utilizzando la vista sys.dm_os_waiting_tasks qual'è il tipo di attesa (colonna wait_type) associato alla tua query?

    Davide Mauri
    Microsoft MVP - SQL Server, MCP, MCAD, MCDBA, MCT - http://www.davidemauri.it
    Socio Fondatore e Mentor di Solid Quality Learning Italy - http://www.solidq.com
    Presidente di UGISS: User Group Italiano Sql Server - http://www.ugiss.org
    • Post Points: 5
Page 1 of 1 (3 items)
(C) 2007 User Group Italiano di SQL Server