SqlPipe.ExecuteAndSend(SqlCommand) 方法

定义

执行作为参数传递的命令,并将结果发送到客户端。

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

要执行的 SqlCommand 对象。

例外

commandnull

对于绑定到进程外连接的命令,此方法不受支持。

示例

以下示例使用 SqlConnectionSqlCommand 从存储过程中的数据源中选择行。 然后,该示例使用 SqlPipe 执行命令并将结果发送回客户端。

[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

注解

除了任何实际结果外,其他消息和错误也会直接发送到客户端。

输出参数和返回值不会发送到客户端;这些通过命令对象的参数集合可供调用方使用。

如果命令未绑定到进程内连接, InvalidOperationException 则会引发 。 对于绑定到进程外连接的命令,此方法不受支持。

如果提交的对象中 SqlCommand 存在错误,则会将异常发送到管道,但也会向调用托管代码发送副本。 如果调用代码未捕获异常,它将向上传播堆栈到 Transact-SQL 代码,并在输出中出现两次。 如果调用代码确实捕获了异常,管道使用者仍将看到错误,但不会有重复错误。

适用于