Auf Englisch lesen

Freigeben über


SqlPipe.ExecuteAndSend(SqlCommand) Methode

Definition

Führt den als Parameter übergebenen Befehl aus und sendet die Ergebnisse an den 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)

Parameter

command
SqlCommand

Das auszuführende SqlCommand-Objekt.

Ausnahmen

command ist null.

Diese Methode wird nicht bei Befehlen unterstützt, die an prozessexterne Verbindungen gebunden sind.

Beispiele

Im folgenden Beispiel werden Zeilen aus einer Datenquelle in einer gespeicherten Prozedur verwendet SqlConnection und SqlCommand ausgewählt. Im Beispiel wird dann ein Befehl zum Ausführen des Befehls verwendet SqlPipe und die Ergebnisse an den Client gesendet.

[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

Hinweise

Zusätzlich zu allen tatsächlichen Ergebnissen werden auch andere Nachrichten und Fehler direkt an den Client gesendet.

Ausgabeparameter und Rückgabewerte werden nicht an den Client gesendet; diese sind für den Aufrufer über die Parametersammlung des Befehlsobjekts verfügbar.

Wenn der Befehl nicht an eine Prozessverbindung gebunden ist, wird eine InvalidOperationException ausgelöst. Diese Methode wird nicht bei Befehlen unterstützt, die an prozessexterne Verbindungen gebunden sind.

Wenn Fehler im gesendeten Objekt vorhanden sind, werden Ausnahmen an die SqlCommand Pipe gesendet, aber eine Kopie wird auch an verwalteten Code gesendet. Wenn der Aufrufcode die Ausnahme nicht erfasst, wird der Stapel zweimal an den Transact-SQL-Code verteilt und zweimal in der Ausgabe angezeigt. Wenn der Anrufcode die Ausnahme abfangen kann, wird der Pipe Consumer weiterhin den Fehler angezeigt, aber es gibt keinen doppelten Fehler.

Gilt für