次の方法で共有


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 です。

アウトプロセス接続にバインドされたコマンドに対してこのメソッドを使用することはできません。

次の例では、ストアド プロシージャ内のデータ ソースから行を使用 SqlConnection して SqlCommand 選択します。 次に、この例では a 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 コードに伝達され、出力に 2 回表示されます。 呼び出し元のコードで例外がキャッチされた場合でも、パイプ コンシューマーにはエラーが表示されますが、重複するエラーは発生しません。

適用対象