Compartilhar via


SqlPipe.ExecuteAndSend(SqlCommand) Método

Definição

Executa o comando passado como um parâmetro e envia os resultados para o cliente.

public:
 void ExecuteAndSend(System::Data::SqlClient::SqlCommand ^ command);
public void ExecuteAndSend (System.Data.SqlClient.SqlCommand command);
member this.ExecuteAndSend : System.Data.SqlClient.SqlCommand -> unit
Public Sub ExecuteAndSend (command As SqlCommand)

Parâmetros

command
SqlCommand

O objeto SqlCommand a ser executado.

Exceções

O command é null.

Não há suporte para esse método em comandos associados a conexões fora do processo.

Exemplos

O exemplo a seguir usa SqlConnection e SqlCommand para selecionar linhas de uma fonte de dados em um procedimento armazenado. Em seguida, o exemplo usa um SqlPipe para executar o comando e enviar os resultados de volta para o cliente.

[Microsoft.SqlServer.Server.SqlProcedure()]
public static void StoredProcExecuteCommand(int rating)
{
    // Connect through the context connection.
    using (SqlConnection connection = new SqlConnection("context connection=true"))
    {
        connection.Open();

        SqlCommand command = new SqlCommand(
            "SELECT VendorID, AccountNumber, Name FROM Purchasing.Vendor " +
            "WHERE CreditRating <= @rating", connection);
        command.Parameters.AddWithValue("@rating", rating);

        // Execute the command and send the results directly to the client.
        SqlContext.Pipe.ExecuteAndSend(command);
    }
}
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub StoredProcExecuteCommand(ByVal rating As Integer)
    Dim command As SqlCommand

    ' Connect through the context connection
    Using connection As New SqlConnection("context connection=true")
        connection.Open()

        command = New SqlCommand( _
            "SELECT VendorID, AccountNumber, Name FROM Purchasing.Vendor " & _
            "WHERE CreditRating <= @rating", connection)
        command.Parameters.AddWithValue("@rating", rating)

        ' Execute the command and send the results directly to the client
        SqlContext.Pipe.ExecuteAndSend(command)
    End Using
End Sub

Comentários

Além dos resultados reais, outras mensagens e erros também são enviados diretamente ao cliente.

Parâmetros de saída e valores retornados não são enviados ao cliente; eles estão disponíveis para o chamador, por meio da coleção de parâmetros do objeto de comando.

Se o comando não estiver associado a uma conexão em processo, um InvalidOperationException será gerado. Não há suporte para esse método em comandos associados a conexões fora do processo.

Se houver erros no SqlCommand objeto que foi enviado, as exceções serão enviadas para o pipe, mas uma cópia também será enviada para chamar o código gerenciado. Se o código de chamada não capturar a exceção, ele propagará a pilha para o código transact-SQL e aparecerá na saída duas vezes. Se o código de chamada capturar a exceção, o consumidor de pipe ainda verá o erro, mas não haverá um erro duplicado.

Aplica-se a