Como: Criar e executar um CLR SQL servidor Stored procedimento

Crie procedimentos armazenados SQL adicionando itens Stored Procedure para projetos do SQL Server.Depois de você implanta com êxito em um computador que executa o SQL servidor, procedimentos armazenados criados no código gerenciado são chamados e executados como qualquer Outros procedimento armazenado.

Observação:

O recurso de integração Common Language Runtime (CLR) fica desativado por padrão no Microsoft SQL Server e deve ser ativado para usar itens de projeto SQL Server.Para ativar integração CLR, use o CLR enabled opção de do sp_configure procedimento armazenado.Para obter mais informações, consulte Habilitar integração CLR.

Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

Criando procedimentos armazenados SQL Server

Para criar um procedimento armazenado SQL Server

  1. Abra um existente Projeto do SQL servidor, ou criar um novo.Para obter mais informações, consulte Como: Criar um projeto de SQL servidor.

  2. A partir do menu Project, selecione Add New Item.

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

  4. Digite um Name para o novo procedimento armazenado.

  5. Adicione código para ser executado quando o procedimento armazenado for executado.Consulte o exemplo abaixo.

    Observação:

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

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

    For Visual C++, in Solution Explorer, open the debug.sql file.

  7. Add code to the Test.sql (debug.sql for Visual C++) file to execute the stored procedure.Consulte o segundo exemplo abaixo.

  8. Pressione F5 para criar, implantar e depurar o procedimento armazenado.For information on deploying without debugging, see Como: Implantar o SQL servidor projeto Items em um SQL servidor.

  9. Exibir os resultados no Janela de saída e selecionar Show output from: Banco de dados de saída .

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 o SQL servidor projeto Items em um SQL servidor.

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();
    }
};

Add code to execute and test your stored procedure to the Test.sql (debug.sql in Visual C++) file in the TestScripts folder in your project.For example, if you deployed a stored procedure, run it by calling EXEC <StoredProcedureName> and passing in any expected parameters.Se o procedimento armazenado não retorna quaisquer valores, insira código adicional para verificar dados que foram afetados pelo procedimento armazenado.

EXEC InsertCurrency 'AAA', 'Currency Test'
SELECT * from Sales.Currency where CurrencyCode = 'AAA'

Consulte também

Tarefas

Como: Criar um projeto de SQL servidor

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

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

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