Como: Criar e executar uma função de SQL Server User-Defined usando a integração do Common Language Runtime
Criar uma função definida pelo usuário do SQL adicionando um User-defined função a um projeto de banco de dados SQL Server Common Language Runtime (CLR SQL). Após a implantação bem-sucedida, a função definida pelo usuário pode ser chamada e executada.
![]() |
---|
Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio. |
Criando Funções SQL Server definidas pelo usuário
Para criar e implantar essa função usando Visual Studio.
Abra um existente Projeto de banco de dados do CLR SQL, ou criar um novo. Para obter mais informações, consulte Como: Criar um projeto para os objetos de banco de dados que usam a integração de tempo de execução de linguagem comum SQL Server.
No menu Project, selecione Add New Item.
No Add New Item caixa de diálogo, selecione User-defined função.
Digite um Name para a nova função definida pelo usuário.
Adicione código para executar quando a função definida pelo usuário é executada. Consulte o primeiro exemplo que segue este procedimento.
Em Solution Explorer, abra o TestScripts pasta e clique duas vezes o Test. SQL o arquivo para abri-lo para edição. Adicione código para executar a função definida pelo usuário. Consulte o segundo exemplo que segue este procedimento.
Observação
Você pode especificar outros scripts como o seu script de depuração padrão. Para obter mais informações, consulte Como: Edite o Script de Test. SQL para executar objetos usar a integração de tempo de execução de linguagem comum de SQL Server.
Implante a função definida pelo usuário ao SQL Server. Para obter mais informações, consulte Como: Implantar itens de projeto de banco de dados do CLR de SQL um SQL Server.
Importante
SQL Server 2005e SQL Server 2008 oferece suporte somente a os projetos deSQL Server que foram criados com o 2.0, 3.0 ou versão 3.5 do.NET Framework. Se você tentar implantar um SQL Server projeto SQL Server 2005 ou SQL Server 2008, um erro será exibida: Deploy error (SQL01268): .NET SqlClient Data Provider: Msg 6218, Level 16, State 3, Line 1 CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'AssemblyName' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database (onde AssemblyName é o nome do assembly que você estiver implantando). Para obter mais informações, consulte Como: Criar um projeto para os objetos de banco de dados que usam a integração de tempo de execução de linguagem comum SQL Server.
Pressione F5 para depurar a função definida pelo usuário executando-a no SQL Server.
Descrição
O exemplo de código a seguir cria uma função escalar definida pelo usuário chamada addTax que recebe um preço como um parâmetro, adiciona imposto sobre vendas a ele e retorna o preço mais o imposto.
Depois de criar a função, implantá-lo para o SQL Server. Para mais informações, consulte: Como: Implantar itens de projeto de banco de dados do CLR de SQL um SQL Server.
Código
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public Class UserDefinedFunctions
Public Const SALES_TAX As Double = 0.086
<SqlFunction()>
Public Shared Function addTax(ByVal originalAmount As SqlDouble) As SqlDouble
Dim taxAmount As SqlDouble = originalAmount * SALES_TAX
Return originalAmount + taxAmount
End Function
End Class
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
public const double SALES_TAX = .086;
[SqlFunction()]
public static SqlDouble addTax(SqlDouble originalAmount)
{
SqlDouble taxAmount = originalAmount * SALES_TAX;
return originalAmount + taxAmount;
}
}
Descrição
Adicione código para testar a função definida pelo usuário para o arquivo Test. SQL na pasta TestScripts no seu projeto. Por exemplo, para testar essa função, use uma consulta, tal como "SELECT dbo.addTax(10)". Você deve ver o valor retornado "10.86".
Código
SELECT dbo.addTax(10)
Consulte também
Tarefas
Como: Criar e executar um disparador de SQL Server usando a integração do Common Language Runtime
Como: Criar e executar um agregado de SQL Server usando a integração do Common Language Runtime
Demonstra Passo a passo: Criar um procedimento armazenado no código gerenciado
Como: Depurar um CLR SQL procedimento armazenado
Referência
Atributos para objetos de banco de dados e de projetos de banco de dados do CLR de SQL
Conceitos
Introduction to SQL Server CLR Integration (ADO.NET)
Vantagens de usar código gerenciado para criar objetos de bancos de dados
Criar objetos de SQL Server no código gerenciado