サーバーサイドでは、C APIのmysql_stmt_attr_set()関数を呼び出してカーソル機能を実装できますが、いくつかの制限があります。
サーバーサイドカーソルは、結果セットをサーバー側で生成することを許可しますが、クライアントが要求した行のみをクライアントに転送します。例えば、クライアントが実行したクエリで最初の1行のデータのみを取得したい場合、残りの行はクライアントに転送されません。
その他の制限事項は以下の通りです:
カーソルは読み取り専用であり、カーソルを使用して行を更新することはできません。そのため、
UPDATE WHERE CURRENT OFおよびDELETE WHERE CURRENT OFはサポートされていません。カーソルは非保持型であり、コミット後は開いた状態を維持しません。
カーソルは不感応です。
カーソルはロールバックできません。
カーソルに名前を付けることはできません。ステートメントハンドルを使用してカーソルIDを取得します。
各プリペアドステートメントで開けるカーソルは1つだけです。カーソルの数はプリペアドステートメントの数と一致します。
プリペアドモードで結果セットの生成をサポートしないステートメントでは、そのステートメントに対してカーソルを使用できません。これには
CHECK TABLE、HANDLER READ、SHOW BINLOG EVENTSなどのステートメントが含まれます。