次の方法で共有


ストレージの割り当て

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

アプリケーションでは、SQL ステートメントの実行前後に、結果用のストレージを割り当てることができます。 アプリケーションで最初に SQL ステートメントを準備または実行すると、結果のストレージを割り当てる前に、結果セットに関する情報を取得できます。 たとえば、結果セットが不明であれば、アプリケーションでは、列にストレージを割り当てる前に、列数を取得する必要があります。

データの列にストレージを関連付けるために、アプリケーションは SQLBindCol を呼び出して渡します。

  • データの変換先のデータ型。

  • データの出力バッファーのアドレス。

    アプリケーションではこのバッファーを割り当てる必要があります。このバッファーは、変換後の形式でデータを保持するのに十分な大きさを確保する必要があります。

  • 出力バッファーの長さ。

    この値は、返されるデータが C の固定幅データ (整数、実数、日付構造体など) の場合は無視されます。

  • 使用できるデータのバイト数を返すストレージ バッファーのアドレス。

また、アプリケーションは、結果セットの列をプログラム変数の配列にバインドして、結果セットの行をブロック単位でフェッチする機能をサポートすることもできます。 配列バインドには、次の 2 種類があります。

  • 列方向のバインドは、各列を変数の独自の配列にバインドすると終了します。

    列方向のバインドは、 SQLSetStmtAttr Attribute を SQL_ATTR_ROW_BIND_TYPE に設定し、 ValuePtr を SQL_BIND_BY_COLUMN に設定して呼び出すことによって指定します。 すべての配列には、同じ数の要素を保持する必要があります。

  • 行方向のバインドは、SQL ステートメント内のすべてのパラメーターを 1 単位として、パラメーターの各変数を保持する構造体の配列にバインドすると終了します。

    行方向のバインドは、 Attribute を SQL_ATTR_ROW_BIND_TYPE に設定してsqlSetStmtAttrを呼び出しValuePtr結果セット列を受け取る変数を保持する構造体のサイズに設定することによって指定されます。

また、アプリケーションでは、SQL_ATTR_ROW_ARRAY_SIZE を列または行の配列内の要素数に設定し、SQL_ATTR_ROW_STATUS_PTR と SQL_ATTR_ROWS_FETCHED_PTR も設定します。

参照

結果の処理 (ODBC)