SqlPipe.ExecuteAndSend(SqlCommand) Methode
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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)
- command
- SqlCommand
Das auszuführende SqlCommand-Objekt.
command
ist null
.
Diese Methode wird nicht bei Befehlen unterstützt, die an prozessexterne Verbindungen gebunden sind.
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
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.