1. カーソルとは何ですか?スクリーニング条件 WHERE および HAVING またはキーワード LIMIT を使用して返されるレコードを制限することによってレコードを返すこともできますが、ポインターのように結果セット内でレコードを前方または後方に検索したり、 このときカーソルが使えます。カーソルは柔軟な操作モードを提供し、結果セット内の各レコードを検索し、指定されたレコード内のデータを操作することができます。カーソルは、セット指向言語である SQL にプロシージャを開発する機能を提供します。 SQL では、カーソルは、データベース テーブルに格納されているデータの行を指すことができる一時的なデータベース オブジェクトです。ここで、カーソルは たとえば、従業員テーブルをクエリして、給与が 15,000 を超える従業員を検索します。 従業員から従業員ID、姓、給与を選択します 給与 > 15000; ここでは、カーソルを使用してデータ行を操作できます。図に示すように、カーソルが配置されている行は「108」のレコードです。結果セット上でカーソルをスクロールして、結果セット内の任意の行を指すこともできます。 2. カーソルの使い方カーソルはハンドラーの前に宣言する必要があり、変数と条件もカーソルまたはハンドラーの前に宣言する必要があります。 1. カーソルを宣言する構文形式: DECLARE カーソル名 CURSOR FOR クエリ ステートメント; SELECT ステートメントを使用してデータ結果セットを取得しますが、この時点ではまだデータはまだ走査されていません。ここでのクエリ ステートメントは、 例: emp_curカーソルを宣言する 従業員から従業員ID、給与を選択します。 2.カーソルを開く構文形式: OPEN カーソル名; カーソルを定義した後、カーソルを使用する場合は、まずカーソルを開く必要があります。カーソルが開かれると、SELECT ステートメントのクエリ結果セットがカーソル ワークスペースに送信され、後続のカーソルが 3. カーソルを使用する構文形式: FETCH cursor_name INTO var_name [, var_name] ... このステートメントの機能は、 注意:カーソルを宣言する前に var_name を定義する必要があります。 例: emp_cur を emp_id、emp_sal にフェッチします。 注意:カーソル クエリ結果セット内のフィールド数は、INTO 後の変数の数と一致している必要があります。 4. カーソルを閉じる構文形式: CLOSE カーソル名; カーソルの使用が終わったら、カーソルを閉じる必要があります。カーソルは カーソルを閉じると、クエリ結果のデータ行を取得できなくなります。取得する必要がある場合は、カーソルを再度開くしかありません。 3. コード例#ストアドプロシージャ「get_count_by_limit_total_salary()」を作成します。 # DOUBLE 型の IN パラメータ limit_total_salary を宣言し、INT 型の OUT パラメータ total_count を宣言します。 #この関数は、給与が最も高い従業員の給与値を合計することができます。 #給与総額がlimit_total_salaryパラメータの値に達するまで、累計人数をtotal_countに返します。 区切り文字 $ CREATE PROCEDURE get_count_by_limit_total_salary(IN limit_total_salary DOUBLE, OUT total_count INT) 始める DECLARE count_emp INT DEFAULT 0; #人数を記録するために使用します。デフォルト値は0です DECLARE sum_sal DOUBLE DEFAULT 0; #給与総額を記録する DECLARE one_sal DOUBLE DEFAULT 0; #1人の給与を記録する # クエリされた給与結果セットを高いものから低いものの順に並べ替えるカーソルを宣言します。DECLARE emp_cur CURSOR FOR SELECT salary FROM employees ORDER BY salary DESC; OPEN emp_cur; #カーソルを開く # 合計給与が質問の要件を満たすまでループ文を使用して走査します。繰り返し #カーソルの使用を開始します FETCH emp_cur INTO one_sal; sum_sal = sum_sal + one_sal を設定します。 count_emp = count_emp + 1 を設定します。 合計給与 >= 合計給与の上限まで 繰り返し終了; CLOSE emp_cur; #カーソルを閉じる #結果をtotal_countに返す count_emp を total_count に選択します。 終了 $ 区切り文字 ; get_count_by_limit_total_salary(30000,@count) を呼び出します。 @count を選択; 思考分析:まずストアド プロシージャを作成し、実際の状況に応じて必要な変数を宣言して、問題の要件を満たします。カーソルは、カーソルを開き、カーソルを使用し、最後にカーソルを閉じるという手順で作成する必要があります。ループ内でカーソルを使用することに注意して、コードのシンプルさを向上させます。 4. まとめカーソルは MySQL の重要な機能であり、 ただし、パフォーマンスの問題もいくつか発生します。たとえば、カーソルを使用すると、データ行が 推奨事項:システム全体の効率を向上させるために、使用後は必ず閉じる習慣をつけてください。
これで、MySQL カーソルの詳細な紹介に関するこの記事は終了です。MySQL カーソルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Nginx を使用してポート転送 TCP プロキシを実装する例
Linux での ssh サービス構成など、ssh サーバー構成に関する記事は多数あります。ここでは...
序文Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだ...
MySQL では、ソートには order by を、ページングには limit をよく使用します。最...
インストールの提案: インストールには .exe を使用せず、圧縮パッケージを使用してください。これ...
効果画像:実装コードは以下のとおりですビュー <canvas id="radar-c...
序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...
現在、layuiの関係者はlayim友達検索ページの構造とスタイルを提供していません。私は個人的に非...
マイクロソフトIIS (Internet Information Server) は、Microso...
HTML 検証はHTML 検証を指します。これは、HTML ドキュメントを分析し、標準の HTML ...
数字で始まる次の CSS クラス名は有効になりません。 .1番目{ 色: 赤; }有効な CSS ク...
目次1. 開発前にエンティティの種類を決定する2. インターフェースをリクエストするときは、使用する...
目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...
目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...
次のようなシナリオがあります。円形のコンテナで、最も外側のコンテナの背景が円弧になっています。内側の...
序文add_header は、headers モジュールで定義されたディレクティブです。名前が示すよ...