Partager via


SqlPipe.ExecuteAndSend(SqlCommand) Méthode

Définition

Exécute la commande passée en tant que paramètre et envoie les résultats au client.

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)

Paramètres

command
SqlCommand

Objet SqlCommand à exécuter.

Exceptions

command a la valeur null.

Cette méthode n'est pas prise en charge sur les commandes liées aux connexions extra processus.

Exemples

L’exemple suivant utilise SqlConnection et SqlCommand pour sélectionner des lignes à partir d’une source de données dans une procédure stockée. L’exemple utilise ensuite un SqlPipe pour exécuter la commande et renvoyer les résultats au client.

[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

Remarques

En plus des résultats réels, d’autres messages et erreurs sont également envoyés directement au client.

Les paramètres de sortie et les valeurs de retour ne sont pas envoyés au client ; ceux-ci sont disponibles pour l’appelant, via la collection de paramètres de l’objet de commande.

Si la commande n’est pas liée à une connexion in-process, une InvalidOperationException est levée. Cette méthode n'est pas prise en charge sur les commandes liées aux connexions extra processus.

En cas d’erreurs dans l’objet SqlCommand qui a été envoyé, des exceptions sont envoyées au canal, mais une copie est également envoyée à l’appel du code managé. Si le code appelant n’intercepte pas l’exception, il se propage vers le haut de la pile vers le code Transact-SQL et apparaît deux fois dans la sortie. Si le code appelant intercepte l’exception, le consommateur de canal voit toujours l’erreur, mais il n’y aura pas d’erreur en double.

S’applique à