Funzioni definite dall'utente in AdventureWorks
Nel database OLTP di esempio AdventureWorks sono incluse numerose funzioni Transact-SQL definite dall'utente. Nell'argomento Esempi di programmabilità CLR sono disponibili esempi di funzioni CLR (Common Language Runtime) definite dall'utente.
Funzioni CLR definite dall'utente
Nella tabella seguente sono elencati gli esempi di funzioni CLR definite dall'utente disponibili. Per ulteriori informazioni sulle funzioni CLR definite dall'utente, vedere Funzioni CLR definite dall'utente.
Esempio |
Descrizione |
---|---|
Supplementary-Aware String Manipulation |
Viene mostrata l'implementazione di cinque funzioni per i valori stringa Transact-SQL in cui sono offerte le stesse funzioni di modifica dei valori stringa di quelle predefinite, nonché ulteriori capacità di riconoscimento dei caratteri che consentono di gestire sia le stringhe Unicode sia quelle contenenti caratteri supplementari. Le cinque funzioni sono len_s(), left_s(), right_s(), sub_s() e replace_s(). Si tratta di funzioni per i valori stringa equivalenti a quelle predefinite, ovvero LEN(), LEFT(), RIGHT(), SUBSTRING() e REPLACE(). |
Esempio In-Process Data Access |
Sono contenute diverse funzioni semplici in cui vengono illustrate le varie funzionalità del provider di accesso ai dati in-process SQLCLR. |
AdventureWorks Cycles CLR Layer |
È contenuta una funzione di conversione valuta tramite cui viene restituita un'istanza di un tipo di dati valuta definito dall'utente. |
UDT Utilities |
Sono incluse funzioni per esporre metadati di assembly in Transact-SQL, ovvero esempi di funzioni con valori di tabella di flusso per restituire i tipi inclusi in un assembly in forma di tabella e funzioni per restituire campi, metodi e proprietà in un tipo definito dall'utente. Illustra tecnologie quali le funzioni con valori di tabella di flusso, API di riflessione di Microsoft .NET Framework e l'invocazione di funzioni con valori di tabella da Transact-SQL. |
Funzioni Transact-SQL definite dall'utente
Nella tabella seguente sono elencate le funzioni Transact-SQL definite dall'utente incluse nel database OLTP di esempio AdventureWorks. Per ulteriori informazioni sulle funzioni definite dall'utente di Transact-SQL, vedere Informazioni sulle funzioni definite dall'utente.
Funzione definita dall'utente |
Descrizione |
Parametri di input |
Valori restituiti |
---|---|---|---|
ufnLeadingZeros |
Funzione scalare che aggiunge zero iniziali a un valore intero specificato. La funzione restituisce un tipo di dati varchar(8). |
@valueint |
@ReturnValuevarchar(8) |
ufnGetContactInformation |
Semplifica l'accesso utente ai dati incapsulando una query complessa in una funzione con valori di tabella. |
@contactidint |
ContactIDint, FirstNamenvarchar(50), LastNamenvarchar(50), JobTitle nvarchar(50), ContactType nvarchar(50) |
ufnGetProductDealerPrice |
Funzione scalare che calcola il prezzo rivenditore di un prodotto specifico in base al rispettivo prezzo di listino in una determinata data. |
@productIDint, @orderdate datetime |
@DealerPricemoney |
Esempi
A. Utilizzo di dbo.ufnLeadingZeros
Nell'esempio seguente viene utilizzata la funzione ufnLeadingZeros per generare un numero di account del cliente a partire da una colonna CustomerID esistente nella tabella Customer.
USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID))
AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO
B. Utilizzo di dbo.ufnGetContactInformation
Il database AdventureWorks contiene i nomi di dipendenti, clienti (rappresentanti di punti vendita o privati) e rappresentanti di fornitori in un'unica tabella, ovvero Contact. La funzione con valori di tabella ufnGetContactInformation restituisce una riga per un valore ContactID specificato.
USE AdventureWorks;
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(2200);
GO
SELECT ContactID, FirstName, LastName, JobTitle, ContactType
FROM dbo.ufnGetContactInformation(5);
GO
C. Utilizzo di dbo.ufnGetProductDealerPrice
Nell'esempio seguente viene utilizza la funzione ufnGetProductDealerPrice per restituire il prezzo rivenditore scontato relativo a tutti i prodotti inclusi nella tabella ProductListPriceHistory.
USE AdventureWorks;
GO
SELECT ProductID, ListPrice, dbo.ufnGetProductDealerPrice(ProductID, StartDate) AS DealerPrice,
StartDate, EndDate
FROM Production.ProductListPriceHistory
WHERE ListPrice > .0000
ORDER BY ProductID, StartDate;
Vedere anche