Funções definidas pelo usuário na AdventureWorks
O banco de dados OLTP de exemplo AdventureWorks engloba várias funções Transact-SQL definidas pelo usuário. Exemplos de CLR (Common Language Runtime) definidos pelo usuário estão disponíveis em Exemplos de programação CLR.
Funções CLR definidas pelo usuário
A tabela a seguir relaciona os exemplos disponíveis de funções CLR definidas pelo usuário. Para obter mais informações sobre funções CLR definidas pelo usuário, consulte Funções CLR definidas pelo usuário.
Exemplo |
Descrição |
---|---|
Manipulação de cadeia de caracteres com reconhecimento de suplementares |
Mostra a implementação de cinco funções da cadeia de caracteres Transact-SQL que fornecem as mesmas funções de modificação de cadeia como internas, porém com capacidade adicional de reconhecimento de caractere suplementar, visando lidar tanto com Unicode como com cadeia de caracteres suplementares. As cinco funções são len_s (), left_s (), right_s (), sub_s () e replace_s (). Elas equivalem às funções internas LEN (), LEFT (), RIGHT (), SUBSTRING () e REPLACE () da cadeia de caracteres. |
Exemplo de acesso aos dados em processo |
Contém várias funções simples que demonstram vários recursos do provedor de acesso de dados SQLCLR em andamento. |
AdventureWorks Cycles CLR Layer |
Contém uma função de conversão de moeda que retorna uma instância de moeda de tipo definido por usuário. |
Utilitários UDT |
Inclui funções para expor metadados do assembly a Transact-SQL; funções com valor de tabela de fluxo de exemplo para retornar os tipos em um assembly como tabela, e também funções para retornar os campos, métodos e propriedades em um tipo definido pelo usuário. Demonstra tecnologias, como funções com valor de tabela de fluxo, APIs de reflexão do Microsoft .NET Framework e invocação de funções avaliadas por tabela a partir de Transact-SQL. |
Funções Transact-SQL definidas por usuário
A tabela a seguir lista as funções definidas pelo usuário Transact-SQL incluídas no banco de dados OLTP AdventureWorks de exemplo. Para obter mais informações sobre as funções definidas pelo usuário Transact-SQL, consulte Compreendendo as funções definidas pelo usuário.
Função definida pelo usuário |
Descrição |
Parâmetros de entrada |
Valores de retorno |
---|---|---|---|
ufnLeadingZeros |
Função escalar que adiciona zeros à esquerda de um valor inteiro especificado. A função retorna um tipo de dados varchar(8). |
@valueint |
@ReturnValuevarchar(8) |
ufnGetContactInformation |
Simplifica o acesso do usuário aos dados, encapsulando uma consulta complexa em uma função com valor de tabela. |
@contactidint |
ContactIDint, FirstNamenvarchar(50), LastNamenvarchar(50), JobTitle nvarchar(50), ContactType nvarchar(50) |
ufnGetProductDealerPrice |
Função escalar que calcula o preço do revendedor para determinado produto, com base no preço de lista do produto em uma data específica. |
@productIDint, @orderdate datetime |
@DealerPricemoney |
Exemplos
A. Usando dbo.ufnLeadingZeros
O exemplo a seguir usa a função ufnLeadingZeros para gerar um número de conta de cliente de uma coluna CustomerID existente na tabela Customer.
USE AdventureWorks;
GO
SELECT CustomerID,('AW' + dbo.ufnLeadingZeros(CustomerID))
AS GenerateAccountNumber
FROM Sales.Customer
ORDER BY CustomerID;
GO
B. Usando dbo.ufnGetContactInformation
O banco de dados AdventureWorks contém os nomes de funcionários, clientes (representantes de lojas ou consumidores finais) e representantes de fornecedor em uma tabela, a tabela Contact. A função com valor de tabela ufnGetContactInformation retorna uma linha para um ContactIDespecificado.
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. Usando dbo.ufnGetProductDealerPrice
O exemplo a seguir usa a função ufnGetProductDealerPrice para retornar o preço do revendedor com desconto para todos os produtos da tabela 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;
Consulte também