Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » Sybase Open Client API » Open Client アプリケーションでの SQL の使用

 

カーソルの使い方

ct_cursor 関数を使用してカーソルを管理します。この関数には、実行したいアクションを type パラメータで指定します。

サポートするカーソル・タイプ

SQL Anywhere がサポートする全タイプのカーソルを、Open Client インタフェースを通じて使用できるわけではありません。スクロール・カーソル、動的スクロール・カーソル、または insensitive カーソルは、Open Client を通じて使用できません。

ユニークさと更新可能であることが、カーソルの 2 つの特性です。カーソルはユニーク (各ローが、アプリケーションに使用されるかどうかにかかわりなく、プライマリ・キーまたはユニーク情報を持つ) でもユニークでなくても構いません。カーソルは読み込み専用にも更新可能にもできます。カーソルが更新可能でユニークでない場合は、CS_CURSOR_ROWS の設定にかかわりなく、ローのプリフェッチが行われないので、パフォーマンスが低下する可能性があります。

カーソルを使用する手順

Embedded SQL などの他のインタフェースとは違って、Open Client はカーソルを、文字列として表現された SQL 文に対応させます。Embedded SQL の場合は、まず文を作成し、次にステートメント・ハンドルを使用してカーソルを宣言します。

♦  Open Client でカーソルを使用するには、次の手順に従います。
  1. Open Client のカーソルを宣言するには、CS_CURSOR_DECLARE を type パラメータに指定した ct_cursor を使用します。

  2. カーソルを宣言したら、CS_CURSOR_ROWS を type パラメータに指定した ct_cursor を使用して、サーバからローをフェッチするたびにクライアント側にプリフェッチするローの数を制御できます。

    プリフェッチしたローをクライアント側に格納すると、サーバに対する呼び出し数を減らし、全体的なスループットとターンアラウンド・タイムを改善できます。プリフェッチしたローは、すぐにアプリケーションに渡されるわけではなく、いつでも使用できるようにクライアント側のバッファに格納されます。

    prefetch データベース・オプションの設定によって、他のインタフェースに対するローのプリフェッチを制御します。この設定は、Open Client 接続では無視されます。CS_CURSOR_ROWS 設定は、ユニークでない更新可能なカーソルについては無視されます。

  3. Open Client のカーソルを開くには、CS_CURSOR_OPEN を type パラメータに指定した ct_cursor を使用します。

  4. 各ローをアプリケーションにフェッチするには、ct_fetch を使用します。

  5. カーソルを閉じるには、CS_CURSOR_CLOSE を指定した ct_cursor を使用します。

  6. Open Client では、カーソルに対応するリソースの割り付けを解除する必要もあります。CS_CURSOR_DEALLOC を指定した ct_cursor を使用してください。CS_CURSOR_CLOSE とともに補足パラメータ CS_DEALLOC を指定して、これらの処理を 1 ステップで実行することもできます。


カーソルによるローの変更