Demonstra Passo a passo: Criando um procedimento armazenado em código gerenciado

Agora você pode escrever procedimentos armazenados para bancos de dados SQL Server 2005 em código gerenciado usando as linguagens do .NET Framework como Visual Basic, C# e C++.Procedimentos armazenados escritos em código gerenciado são chamados procedimentos armazenados CLR.

Você pode criar procedimentos armazenados SQL adicionando itens Stored Procedure a projetos SQL Server.Depois da implantação com êxito em um SQL Server, procedimentos armazenados criados no código gerenciado são chamados e executados como qualquer outro procedimento armazenado.

Tarefas ilustradas nesta explicação passo a passo incluem o seguinte:

  • Criando um novo projeto Windows Application.

  • Criando um procedimento armazenado no código gerenciado.

  • Implantando o procedimento armazenado em um banco de dados SQL Server 2005.

  • Criando um script para testar o procedimento armazenado no banco de dados.

  • Consultar dados no banco de dados para confirmar que o procedimento armazenado executa corretamente.

Pré-requisitos

Para concluir esta explicação passo a passo, você precisa:

Criando o projeto

Para criar o novo projeto de SQL Server

  1. No menu File, crie um novo projeto.

  2. Selecione SQL Server Project, nomeie o projeto SQLCLRStoredProcedure e clique em OK.Para obter mais informações, consulte Como: Criar um projeto de SQL servidor.

Conectando-se a um banco de dados SQL Server 2005

Esta explicação passo a passo requer uma conexão para o banco de dados de exemplo AdventureWorks executando em SQL Server 2005.Se uma conexão com o banco de dados de exemplo AdventureWorks estiver disponível em Gerenciador de servidores, ele será listado no Banco de dados de caixa de diálogo Adicionar Referência.

Observação:

Por padrão, o Common linguagem tempo de execução Recurso de integração (CLR) está desativado em Microsoft SQL servidor .Ele deve ser ativado para usar itens de projeto do SQL servidor.Para ativar integração CLR, use o clr enabled opção da sp_configure procedimento armazenado. Para obter mais informações, consulte Habilitar integração CLR.

Para se conectar ao banco de dados de exemplo AdventureWorks

Criando o procedimento armazenado SQL Server

Após criar o projeto de SQL Server, adicione um procedimento armazenado a ele.

Para criar o procedimento armazenado SQL Server

  1. No menu Project, clique em Add New Item.

  2. Selecione Stored Procedure na Adicionar Novo Item Caixa de diálogo caixa.

  3. Digite InsertCurrency como o Name para o novo procedimento armazenado.

  4. Clique em Adicionar.

  5. Substitua o código no Code Editor com o seguinte:

    Observação:

    Exemplos de C++ devem ser compilados com o / CLR : segurança opção do compilador.

    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();
            }
        }
    }
    
    #include "stdafx.h"
    
    #using <System.dll>
    #using <System.Data.dll>
    #using <System.Xml.dll>
    
    using namespace System;
    using namespace System::Data;
    using namespace System::Data::Sql;
    using namespace System::Data::SqlClient;
    using namespace System::Data::SqlTypes;
    using namespace Microsoft::SqlServer::Server;
    
    // In order to debug your Stored Procedure, add the following to your debug.sql file:
    //
    // EXEC InsertCurrency_CPP 'AAA', 'Currency Test'
    // SELECT * FROM Sales.Currency WHERE CurrencyCode = 'AAA'
    
    public ref class StoredProcedures
    {
    public:
        [SqlProcedure]
        static void InsertCurrency_CPP(SqlString currencyCode, SqlString name)
        {
            SqlConnection ^conn = gcnew SqlConnection("context connection=true");
    
            SqlCommand ^insertCurrencyCommand = gcnew SqlCommand();
            SqlParameter ^currencyCodeParam =
                gcnew SqlParameter("@CurrencyCode", SqlDbType::NVarChar);
            SqlParameter ^nameParam =
                gcnew SqlParameter("@Name", SqlDbType::NVarChar);
    
            insertCurrencyCommand->CommandText =
                "insert Sales.Currency(CurrencyCode, Name, ModifiedDate)" +
                " values(@CurrencyCode, @Name)";
            insertCurrencyCommand->Connection = conn;
    
            conn->Open();
            insertCurrencyCommand->ExecuteNonQuery();
    
            conn->Close();
        }
    };
    

Implantando, Executando, e Depurando o procedimento armazenado

Após você criar um novo procedimento armazenado, ele pode ser criado, implantado no SQL Server, e depurado, pressionando F5.Primeiro, no arquivo Test.sql encontrado na pasta TestScripts do seu projeto, adicione código para executar e testar seu procedimento armazenado.Para Visual C++, esse arquivo é chamado debug.sql.Para obter mais informações sobre como criar scripts de teste, consulte Como: edição the teste.SQL Script to Run SQL Objects.

Para obter mais informações sobre como depurar SQL, consulte Depurando de objetos de banco de dados do SQL.

Para distribuir, e executar o procedimento armazenado InsertCurrency

  1. Para Visual Basic e Visual C#, em Solution Explorer, abra a pasta TestScripts e clique duas vezes no arquivo Test.sql.

    Para Visual C++, em Solution Explorer, clique duas vezes no arquivo debug.sql.

  2. Substitua o código no arquivo Test.sql (debug.sql no Visual C++) pelo seguinte código:

    EXEC InsertCurrency 'AAA', 'Currency Test'
    SELECT * from Sales.Currency where CurrencyCode = 'AAA'
    
  3. Pressione F5 para criar, implantar e depurar o procedimento armazenado.Para obter informações sobre implantação sem depuração, consulte Como: Implantar o SQL servidor projeto Items em um SQL servidor.

    Exibir os resultados que são mostrados no Saída janela e selecionar Show output from: Banco de dados de saída .

Consulte também

Tarefas

Como: Criar e executar um CLR SQL servidor Stored procedimento

Como: Criar e executar um disparar CLR SQL servidor

Como: Criar e executar uma agregação de servidor SQL CLR

Como: Criar and Run a CLR SQL servidor função definida pelo usuário

Como: Criar and Run a CLR SQL servidor tipo definido pelo usuário

Como: Depurar um SQL CLR Procedimento Armazenado

Conceitos

Introduction to Integration CLR SQL Servidor

Vantagens de usar código gerenciado para criar objetos de bancos de dados

Modelos de Item para Projetos do SQL Server

Referência

Atributos para projetos SQL Server e objetos de bancos de dados

Outros recursos

Depuração de banco de dados SQL CLR