Partilhar via


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.

ObservaçãoObservação

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

  1. 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.

  2. No menu Project, selecione Add New Item.

  3. Selecione Stored Procedure no Add New Item Dialog Box.

  4. Digite um Name para o novo procedimento armazenado.

  5. Adicione código para ser executado quando o procedimento armazenado for executado. Consulte o primeiro exemplo que segue este procedimento.

  6. No Solution Explorer, abra a pasta TestScripts e clique duas vezes no arquivo Test.sql.

    ObservaçãoObservaçã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.

  7. Adicione código ao arquivo Test.sql para executar o procedimento armazenado. Consulte o segundo exemplo que segue este procedimento.

  8. 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.

    Observação importanteImportante

    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.

  9. 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.

ObservaçãoObservação

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 um projeto para os objetos de banco de dados que usam a integração de tempo de execução de linguagem comum SQL Server

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

Como: Criar e executar uma função de SQL Server User-Defined usando a integração do Common Language Runtime

Como: Criar e executar um tipo de SQL Server User-Defined 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

Outros recursos

SQL CLR Database Debugging