次の方法で共有


SqlPipe.SendResultsRow(SqlDataRecord) メソッド

定義

単一行のデータをクライアントに返します。

public:
 void SendResultsRow(Microsoft::SqlServer::Server::SqlDataRecord ^ record);
public void SendResultsRow (Microsoft.SqlServer.Server.SqlDataRecord record);
member this.SendResultsRow : Microsoft.SqlServer.Server.SqlDataRecord -> unit
Public Sub SendResultsRow (record As SqlDataRecord)

パラメーター

record
SqlDataRecord

クライアントに送信する行の列値を含む SqlDataRecord オブジェクト。 このレコードのスキーマは、SqlDataRecord メソッドに渡した SendResultsStart(SqlDataRecord) のメタデータが定義するスキーマと一致している必要があります。

例外

recordnull です。

SendResultsStart(SqlDataRecord) メソッドがまだ呼び出されていません。

次の例では、新 SqlDataRecord しい とその を作成します SqlMetaData。 次に、 メソッドを使用して結果セットの先頭をマークし、 メソッドを使用してSendResultsStartSendResultsRowサンプル データを含むレコードをクライアントに送り返し、結果セットの末尾を メソッドでSendResultsEndマークします。

[Microsoft.SqlServer.Server.SqlProcedure]
public static void StoredProcReturnResultSet()
{
    // Create the record and specify the metadata for the columns.
    SqlDataRecord record = new SqlDataRecord(
        new SqlMetaData("col1", SqlDbType.NVarChar, 100),
        new SqlMetaData("col2", SqlDbType.Int));

    // Mark the begining of the result-set.
    SqlContext.Pipe.SendResultsStart(record);

    // Send 10 rows back to the client.
    for (int i = 0; i < 10; i++)
    {
        // Set values for each column in the row.
        record.SetString(0, "row " + i.ToString());
        record.SetInt32(1, i);

        // Send the row back to the client.
        SqlContext.Pipe.SendResultsRow(record);
    }

    // Mark the end of the result-set.
    SqlContext.Pipe.SendResultsEnd();
}
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub StoredProcReturnResultSet()

    ' Create the record and specify the metadata for the columns.
    Dim record As New SqlDataRecord( _
        New SqlMetaData("col1", SqlDbType.NVarChar, 100), _
        New SqlMetaData("col2", SqlDbType.Int))

    ' Mark the begining of the result-set.
    SqlContext.Pipe.SendResultsStart(record)

    ' Send 10 rows back to the client.
    Dim i As Integer
    For i = 0 To 9

        ' Set values for each column in the row.
        record.SetString(0, "row " & i.ToString())
        record.SetInt32(1, i)

        ' Send the row back to the client.
        SqlContext.Pipe.SendResultsRow(record)
    Next

    ' Mark the end of the result-set.
    SqlContext.Pipe.SendResultsEnd()
End Sub

注釈

マネージド ストアド プロシージャは、 を実装していないクライアントに結果セットを SqlDataReader送信できます。 このメソッドと と を使用SendResultsStartSendResultsEndすると、ストアド プロシージャはカスタム結果セットをクライアントに送信できます。

メソッドは SendResultsRow 、1 行のデータをクライアントに送り返します。 その後、送信される各行に対して を 1 回呼び出すことで、行を呼び出 SendResultsRowし元に返すことができます。 すべての行が送信された後、結果セットの末尾を SendResultsEnd マークするには、 メソッドの呼び出しが必要です。

適用対象

こちらもご覧ください