次の方法で共有


ステートメント ハンドルの割り当て

アプリケーションでステートメントを実行する前に、ステートメント ハンドルを割り当てる必要があります。 ステートメント ハンドルを割り当てるには、HandleType パラメーターに SQL_HANDLE_STMT を設定し、InputHandle が接続ハンドルを指すように設定して SQLAllocHandle を呼び出します。

ステートメント属性は、ステートメント ハンドルの特徴を表します。 ブックマークやカーソルを使用してサンプル ステートメント属性を取り込み、ステートメントの結果セットと共に使用することができます。 ステートメント属性は SQLSetStmtAttr を使用して設定し、現在の設定は SQLGetStmtAttr を使用して取得します。 アプリケーションでステートメント属性を設定する必要はありません。すべてのステートメント属性には既定値があり、一部の属性は、ドライバー固有の属性になっています。

複数の ODBC ステートメント オプションと接続オプションを使用する場合は、注意が必要です。 fOption に SQL_ATTR_LOGIN_TIMEOUT を設定して SQLSetConnectAttr を呼び出すことで、接続の確立を待機している間にアプリケーションが接続試行のタイムアウトを待機する時間を制御します (0 を指定すると、無制限に待機します)。 応答時間が遅いサイトでは、この値を高く設定して、接続の完了までに十分な時間を与えることができます。 ただしこの間隔は、ドライバーが接続できない場合に、妥当な時間内にユーザーに応答できる程度に低く抑える必要があります。

fOption に SQL_ATTR_QUERY_TIMEOUT を設定して SQLSetStmtAttr を呼び出すことでクエリのタイムアウト間隔を設定し、サーバーとユーザーを実行時間の長いクエリから保護します。

fOption に SQL_ATTR_MAX_LENGTH を設定して SQLSetStmtAttr を呼び出すことで、個別のステートメントが取得できる text データと image データの量を制限します。 fOption に SQL_ATTR_MAX_ROWS を設定して SQLSetStmtAttr を呼び出すことで、アプリケーションが最初の n 行だけを必要とする場合に、行セットを最初の 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 ステートメントを別のバッチで送信する必要があります。その結果、サーバーに対する追加のラウンドトリップが自動的に生成されます。

関連項目

概念

クエリの実行 (ODBC)