Eseguire funzioni definite dall'utenteExecute User-defined Functions

Eseguire una funzione definita dall'utente con Transact-SQL.Execute a user defined function using Transact-SQL.

Nota: per altre informazioni, vedere l'argomento sulle funzioni definite dall'utente e Create Function (Transact SQL) .Note: Visit user defined function and Create Function (Transact SQL for more information about user defined functions.

Operazioni preliminari Before you begin

Limitazioni e restrizioni Limitations and restrictions

In Transact-SQL è possibile specificare parametri tramite valore oparameter_name=valore.In Transact-SQL, parameters can be supplied either by using value or by using @parameter_name=value. Un parametro non fa parte di una transazione. Se un parametro viene modificato in una transazione per la quale verrà eseguito il rollback, il valore del parametro non viene ripristinato al suo valore precedente.A parameter is not part of a transaction; therefore, if a parameter is changed in a transaction that is later rolled back, the value of the parameter does not revert to its previous value. Il valore restituito al chiamante corrisponde sempre al valore specificato al termine del modulo.The value returned to the caller is always the value at the time the module returns.

Sicurezza Security

Per eseguire l'istruzione EXECUTE non sono necessarie autorizzazioni specifiche.Permissions are not required to run the EXECUTE statement. Sono tuttavia obbligatorie autorizzazioni per le entità a protezione diretta a cui si fa riferimento all'interno della stringa EXECUTE.However, permissions are required on the securables referenced within the EXECUTE string. Se, ad esempio, la stringa include un'istruzione INSERT , il chiamante dell'istruzione EXECUTE deve avere l'autorizzazione INSERT per la tabella di destinazione.For example, if the string contains an INSERT statement, the caller of the EXECUTE statement must have INSERT permission on the target table. Le autorizzazioni vengono verificate non appena viene rilevata l'istruzione EXECUTE, anche se l'istruzione è inclusa in un modulo.Permissions are checked at the time EXECUTE statement is encountered, even if the EXECUTE statement is included within a module. Per altre informazioni, vedere EXECUTE (Transact-SQL).For more information, see EXECUTE (Transact-SQL)

Utilizzo di Transact-SQL Using Transact-SQL

EsempioExample

Questo esempio usa la funzione a valori scalari ufnGetSalesOrderStatusText disponibile nella maggior parte delle edizioni di AdventureWorks.This example uses the ufnGetSalesOrderStatusText scalar-valued function that is available in most editions of AdventureWorks. Lo scopo della funzione è di restituire un valore di testo per lo stato delle vendite da un numero intero specificato.The purpose of the function is to return a text value for sales status from a given integer. Modificare l'esempio passando i numeri interi da 1 a 7 al parametro @Status .Vary the example by passing integers 1 through 7 to the @Status parameter.

USE [AdventureWorks2016CTP3]
GO  

-- Declare a variable to return the results of the function. 
DECLARE @ret nvarchar(15);   

-- Execute the function while passing a value to the @status parameter
EXEC @ret = dbo.ufnGetSalesOrderStatusText 
    @Status = 5; 

-- View the returned value.  The Execute and Select statements must be executed at the same time.  
SELECT N'Order Status: ' + @ret; 

-- Result:
-- Order Status: Shipped