ステートメント属性は、ステートメントの特性です。 たとえば、ブックマークを使用するかどうか、およびステートメントの結果セットで使用するカーソルの種類はステートメント属性です。
ステートメント属性は 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ステートメントの属性はいつでも設定できますが、ステートメントを再度使用する前に適用するかどうかはドライバー固有です。 残りのステートメント属性はいつでも設定できます。
注
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 関数の説明を参照してください。