Como: Criar e executar um procedimento armazenado do SQL Server usando a integração do Common Language Runtime
Criar os procedimentos armazenado de SQL adicionando Procedimento armazenado projetos de banco de dados de itens a serem SQL Server Common Language Runtime (CLR SQL). Depois de implantar com êxito em um computador que esteja executando o SQL Server, procedimentos armazenados criados no código gerenciado são chamados e executados como qualquer outro armazenado procedimentos.
![]() |
---|
As caixas de diálogo e comandos de menu que você vê podem diferir das descritas no Help, dependendo de suas configurações ativas ou de edição. Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações. |
Criando procedimentos armazenados SQL Server
Para criar um procedimento armazenado SQL Server
Abrir um projeto de banco de dados CLR de SQL existente 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.
Selecione Stored Procedure no Add New Item Dialog Box.
Digite um Name para o novo procedimento armazenado.
Adicione código para ser executado quando o procedimento armazenado for executado. Consulte o primeiro exemplo que segue este procedimento.
No Solution Explorer, abra a pasta TestScripts e clique duas vezes no arquivo Test.sql.
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.
Adicione código ao arquivo Test.sql para executar o procedimento armazenado. Consulte o segundo exemplo que segue este procedimento.
Pressione F5 para criar, implantar e depurar o procedimento armazenado. Para obter informações sobre como implantar sem depuração, 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.
Visualize os resultados no Janela de saída e selecione Show output from: Saída de banco de dados.
Exemplo
O exemplo de código a seguir cria um procedimento armazenado que insere um registro na tabela Currency do banco de dados de exemplo Adventure Works. Após criar o procedimento armazenado, implante-o para o SQL Server. Para obter mais informações, consulte Como: Implantar itens de projeto de banco de dados do CLR de SQL um SQL Server.
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports Microsoft.SqlServer.Server
Partial Public Class StoredProcedures
<SqlProcedure()>
Public Shared Sub InsertCurrency(
ByVal currencyCode As SqlString, ByVal name As SqlString)
Using conn As New SqlConnection("context connection=true")
Dim InsertCurrencyCommand As New SqlCommand()
Dim currencyCodeParam As New SqlParameter("@CurrencyCode", SqlDbType.NVarChar)
Dim nameParam As New SqlParameter("@Name", SqlDbType.NVarChar)
currencyCodeParam.Value = currencyCode
nameParam.Value = name
InsertCurrencyCommand.Parameters.Add(currencyCodeParam)
InsertCurrencyCommand.Parameters.Add(nameParam)
InsertCurrencyCommand.CommandText =
"INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" &
" VALUES(@CurrencyCode, @Name, GetDate())"
InsertCurrencyCommand.Connection = conn
conn.Open()
InsertCurrencyCommand.ExecuteNonQuery()
conn.Close()
End Using
End Sub
End Class
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[SqlProcedure()]
public static void InsertCurrency_CS(
SqlString currencyCode, SqlString name)
{
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
SqlCommand InsertCurrencyCommand = new SqlCommand();
SqlParameter currencyCodeParam = new SqlParameter("@CurrencyCode", SqlDbType.NVarChar);
SqlParameter nameParam = new SqlParameter("@Name", SqlDbType.NVarChar);
currencyCodeParam.Value = currencyCode;
nameParam.Value = name;
InsertCurrencyCommand.Parameters.Add(currencyCodeParam);
InsertCurrencyCommand.Parameters.Add(nameParam);
InsertCurrencyCommand.CommandText =
"INSERT Sales.Currency (CurrencyCode, Name, ModifiedDate)" +
" VALUES(@CurrencyCode, @Name, GetDate())";
InsertCurrencyCommand.Connection = conn;
conn.Open();
InsertCurrencyCommand.ExecuteNonQuery();
conn.Close();
}
}
}
Adicione código para executar e testar seu procedimento armazenado ao arquivo Test.sql na pasta TestScripts no seu projeto. For example, if you deployed a stored procedure, run it by calling EXEC <StoredProcedureName> and passing in any expected parameters. Se o seu procedimento armazenado não retorna nenhum valor, insira o código adicional para verificar os dados que foram afetados pelo procedimento armazenado.
![]() |
---|
Se você criou a amostra usando Visual C#, substitua InsertCurrency_CS para o nome do procedimento armazenado, o exemplo a seguir. |
EXEC InsertCurrency 'AAA', 'Currency Test'
SELECT * from Sales.Currency where CurrencyCode = 'AAA'
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
Iniciando a equipe de desenvolvimento de bancos de dados que objetos de referência SQLCLR
Criar objetos de SQL Server no código gerenciado