ステートメント属性

ステートメント属性は、ステートメントの特徴を表します。 例えば、ブックマークを使用するかどうか、ステートメントの結果セットでどのようなカーソルを使用するかは、ステートメントの属性です。

ステートメント属性は SQLSetStmtAttr で設定し、 SQLGetStmtAttr で現在の設定を取得します。 アプリケーションでステートメント属性を設定する必要はありません。すべてのステートメント属性には既定値があり、一部の属性は、ドライバー固有のものです。

ステートメント属性をいつ設定できるかは、属性自体によって異なります。 ステートメントを実行する前に、SQL_ATTR_CONCURRENCY、SQL_ATTR_CURSOR_TYPE、SQL_ATTR_SIMULATE_CURSOR、SQL_ATTR_USE_BOOKMARKS ステートメントの属性を設定する必要があります。 SQL_ATTR_ASYNC_ENABLE と SQL_ATTR_NOSCAN ステートメント属性はいつでも設定できますが、ステートメントが再び使用されるまで適用されません。 SQL_ATTR_MAX_LENGTH、SQL_ATTR_MAX_ROWS、SQL_ATTR_QUERY_TIMEOUT ステートメントの属性はいつでも設定できますが、ステートメントを再び使用する前に適用するかどうかはドライバーによって異なります。 残りのステートメント属性はいつでも設定できます。

Note

SQLSetConnectAttr を呼び出して接続レベルでステートメント属性を設定する機能は、ODBC 3.x ではお勧めしません。 ODBC 3.x アプリケーションでは、接続レベルでステートメント属性を設定しないでください。 ODBC 3.x ドライバーは、ODBC 2.x アプリケーションで動作する必要がある場合にのみ、この機能をサポートする必要があります。 詳細については、「付録 G: 下位互換性のためのドライバー ガイドライン」の「SQLSetConnectOption マッピング」を参照してください。

これに対する例外は、SQL_ATTR_METADATA_ID 属性と SQL_ATTR_ASYNC_ENABLE 属性で、これらは接続属性とステートメント属性の両方であり、接続レベルまたはステートメント レベルで設定できますす。

ODBC 3.x で導入されたステートメント属性 (SQL_ATTR_METADATA_IDを除く) は、どれも接続レベルでは設定できません。

詳細については、「SQLSetStmtAttr 関数の説明」を参照してください。