アプリケーションは、ステートメントを実行する前に、ステートメント ハンドルを割り当てる必要があります。 これを行うには、HandleType パラメーターを SQL_HANDLE_STMT に設定して SQLAllocHandle を呼び出し、接続ハンドルを指す InputHandle を指定します。
ステートメント属性は、ステートメント ハンドルの特性です。 サンプル ステートメント属性には、ブックマークの使用や、ステートメントの結果セットで使用するカーソルの種類を含めることができます。 ステートメント属性は SQLSetStmtAttr で設定され、現在の設定は SQLGetStmtAttr を使用して取得されます。 アプリケーションでステートメント属性を設定する必要はありません。すべてのステートメント属性には既定値があり、一部はドライバー固有です。
いくつかの ODBC ステートメントと接続オプションを使用する場合は注意が必要です。 fOption を SQL_ATTR_LOGIN_TIMEOUT に設定して SQLSetConnectAttr を呼び出すと、接続の確立を待機している間にアプリケーションが接続のタイムアウトを待機する時間が制御されます (0 は無限待機を指定します)。 応答時間が遅いサイトでは、この値を高く設定して、接続の完了に十分な時間を確保できます。 ただし、ドライバーが接続できない場合は、ユーザーに適切な時間内に応答を提供するのに十分な間隔を常に低くする必要があります。
fOption を SQL_ATTR_QUERY_TIMEOUT に設定して SQLSetStmtAttr を呼び出すと、実行時間の長いクエリからサーバーとユーザーを保護するために、クエリのタイムアウト間隔が設定されます。
fOption を SQL_ATTR_MAX_LENGTH に設定して SQLSetStmtAttr を呼び出すと、個々のステートメントで取得できるテキストデータと画像データの量が制限されます。 fOption を SQL_ATTR_MAX_ROWS に設定して SQLSetStmtAttr を呼び出すと、アプリケーションで必要な場合は、最初の n 行に行セットが制限されます。 SQL_ATTR_MAX_ROWSを設定すると、ドライバーは SET ROWCOUNT ステートメントをサーバーに発行します。 これは、トリガーや更新プログラムを含むすべての Microsoft SQL Server ステートメントに影響します。
これらのオプションを設定するときは注意が必要です。 接続ハンドル上のすべてのステートメント ハンドルが、SQL_ATTR_MAX_LENGTHとSQL_ATTR_MAX_ROWSに対して同じ設定を持っている場合に最適です。 ドライバーがステートメント ハンドルからこれらのオプションの値が異なる別のハンドルに切り替える場合、ドライバーは設定を変更するために適切な SET TEXTSIZE ステートメントと SET ROWCOUNT ステートメントを生成する必要があります。 ユーザー SQL ステートメントには、バッチ内の最初のステートメントである必要があるステートメントを含めることができるため、ドライバーは、ユーザー SQL ステートメントと同じバッチにこれらのステートメントを配置できません。 ドライバーは、SET TEXTSIZE ステートメントと SET ROWCOUNT ステートメントを別のバッチで送信する必要があります。このステートメントにより、サーバーに対して追加のラウンドトリップが自動的に生成されます。