共用方式為


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

繫結至跨處理序 (Out-Of-Process) 連接的命令不支援這個方法。

範例

下列範例會使用 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

備註

除了任何實際的結果之外,其他訊息和錯誤也會直接傳送給用戶端。

輸出參數和傳回值不會傳送至用戶端;這些可供呼叫端透過命令物件的 parameters 集合使用。

如果命令未系結至進程內連線, InvalidOperationException 則會擲回 。 繫結至跨處理序 (Out-Of-Process) 連接的命令不支援這個方法。

如果提交的物件中有 SqlCommand 錯誤,例外狀況會傳送至管道,但也會將複本傳送至呼叫 Managed 程式碼。 如果呼叫程式碼未攔截例外狀況,它會將堆疊傳播至 Transact-SQL程式碼,並在輸出中出現兩次。 如果呼叫程式碼確實攔截例外狀況,管道取用者仍會看到錯誤,但不會發生重複的錯誤。

適用於