Condividi tramite


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;