SqlPipe.ExecuteAndSend(SqlCommand) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Executes the command passed as a parameter and sends the results to the 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)
Parameters
- command
- SqlCommand
The SqlCommand object to be executed.
Exceptions
The command
is null
.
This method is not supported on commands bound to out-of-process connections.
Examples
The following example uses SqlConnection and SqlCommand to select rows from a data source in a stored procedure. The example then uses a SqlPipe to execute the command and send the results back to the 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
Remarks
In addition to any actual results, other messages and errors are also sent directly to the client.
Output parameters and return values are not sent to the client; these are available to the caller, through the parameters collection of the command object.
If the command is not bound to an in-process connection, an InvalidOperationException is thrown. This method is not supported on commands bound to out-of-process connections.
If there are errors in the SqlCommand object that was submitted, exceptions are sent to the pipe, but a copy is also sent to calling managed code. If the calling code doesn't catch the exception, it will propagate up the stack to the Transact-SQL code and appear in the output twice. If the calling code does catch the exception, the pipe consumer will still see the error, but there will not be a duplicate error.