sql >> データベース >  >> RDS >> Database

SQLのカーソルとは何ですか?それを実装する方法は?

    SQLのカーソルは、データベースの不可欠な部分を形成します。これは、基本的に、ユーザーがそれほど面倒なことなくデータベースをトラバースするのに役立ちます。 SQLのカーソルに関するこの記事の媒体を通して、足を濡らす前に必要なすべての必要な詳細を提供します。

    この記事で説明するトピックは次のとおりです:

    • SQLのカーソルとは何ですか?
    • SQLカーソルの種類
    • SQLカーソルの構文
    • カーソルのライフサイクル

    SQLのカーソルとは何ですか?

    SQLのカーソルは、任意の結果セットの行をトラバースできるオブジェクトです。これにより、クエリによって返されるデータベースの個々の行を処理できます。これは、SQLステートメントの実行中にメモリシステムに作成される一時的な作業領域またはコンテキスト領域であり、データベースから取得したデータを格納し、その操作を支援します。これは、現在の行を指すポインターとともに行の配置と見なすことができます。カーソルは、複数の行を保持できるデータベースオブジェクトですが、ある時点で処理できるのは1行のみです。カーソルが保持する行のセットは、アクティブと呼ばれます。 セットする。したがって、シングルトン手法でテーブルのレコードを制御できます。つまり、任意の時点で1行を制御できます。

    SQLのカーソルとは何かを理解したところで、次に進み、さまざまなタイプを見てみましょう。

    SQLカーソルの種類

    SQLは、以下にリストした2種類のカーソルを提供します。

    1. 暗黙カーソル

    INSERT、UPDATE、DELETEなどのDML操作がデータベースで処理されるたびに、暗黙カーソルが自動的に生成され、フレームワークによって使用されます。これらのタイプのカーソルは内部処理に使用され、別のコード領域から制御または参照することはできません。 SQLの暗黙カーソルは、操作によって影響を受ける行を保持するだけであり、以下の表に示されているカーソル属性を使用して最新のカーソルのみを参照できます。

    属性 説明
    %FOUND INSERT、UPDATE、またはDELETEステートメントが1つ以上の行に影響する場合、またはSELECT INTOステートメントが1つ以上の行を返す場合、TRUEを返します。それ以外の場合は、FALSEを返します。
    %NOTFOUND これは、技術的には%FOUND属性の反対です。 INSERT、UPDATE、またはDELETEステートメントが行に影響を与えない場合、またはSELECT INTOステートメントが行を返さない場合は、TRUEを返します。それ以外の場合は、FALSEを返します。
    %ISOPEN 関連するSQLステートメントが実行された直後にSQLカーソルが自動的に閉じられるため、この属性は暗黙カーソルに対して常にFALSEを返します。
    %ROWCOUNT INSERT、UPDATE、またはDELETEステートメントによって影響を受ける行の総数、またはSELECTINTOステートメントによって返される行を返します。
    1. 明示カーソル

    このタイプのカーソルは、ユーザーがSQLブロックを介してデータを処理するたびに生成されます。一般に、SELECTクエリを使用すると、明示カーソルの作成がトリガーされ、複数の行を保持できますが、一度に1つだけ処理されます。このタイプのカーソルは、列に存在するレコードを保持するために使用されます。これにより、プログラマーは、DML操作を実行してより適切に制御するための名前付きコンテキスト領域を作成できます。また、SQLブロックで定義する必要があり、そのコードを使用してSELECTクエリ用に作成されます。

    カーソルをよりよく理解するために、SQLでのカーソルの構文を見てみましょう。

    SQLカーソルの構文

    以下は、明示的なカーソルを作成するための一般的な構文です。

    CURSOR cursorName IS selectStatement;

    こちら:

    cursorName –これはカーソルの有効な名前を表します

    selectStatement –これは複数の行を返す選択クエリを表します

    この記事をさらに進めて、SQLカーソルのライフサイクルを見てみましょう。

    カーソルのライフサイクル

    SQLのカーソルのライフサイクルには、基本的に5つの段階があります。以下にリストします。

    1. 宣言
    DECLARE cursorName CURSOR
    FOR selectStatement;

    この手順は、カーソルの名前とデータ型を指定するのに役立ち、SELECTステートメントはその結果セットを定義します。

    1. 開く
    OPEN cursorName;

    この手順では、カーソルを開いて実行することでカーソルを設定できます。

    1. フェッチ
    FETCH NEXT FROM cursor INTO variableList;

    このステップでは、カーソルから行を取得し、それを1つ以上の変数に格納します。

    [オプション]CheckStatus

    WHILE @@FETCH_STATUS = 0
    BEGIN
    FETCH NEXT FROM cursorName;
    END;

    この関数は、カーソルに対して実行された最後のFETCHステートメントのステータスを返します。この関数が0を返す場合は、FETCH操作が成功したことを意味します。カーソルからすべての行をフェッチするために、WHILE句が使用されます。

    1. 閉じる
    CLOSE cursorName;

    この手順は、操作の完了後にカーソルを閉じるのに役立ちます。

    1. 割り当て解除
    DEALLOCATE cursor_name;

    この手順は、カーソルの割り当てを解除し、メモリスペースを解放するのに役立ちます。

    これで、SQLのカーソルに関するこの記事を締めくくりたいと思います。この記事があなたの知識に付加価値を与えるのに役立つことを願っています。 SQLまたはデータベースの詳細については、こちらの包括的な資料リストを参照してください:データベースEdureka

    初心者向けSQLの基本| SQLを学ぶ|初心者のためのSQLチュートリアル|エドゥレカ

    「初心者向けSQLの基本」に関するこのEdurekaビデオは、SQLの基本と、非常に人気があり不可欠なSQLクエリを理解するのに役立ちます。

    MySQLの構造化されたトレーニングを受講したい場合は、MySQLDBA認定トレーニングを確認してください。 インストラクター主導のライブトレーニングと実際のプロジェクトの経験が付属しています。このトレーニングは、MySQLを深く理解し、主題をマスターするのに役立ちます。

    質問がありますか? ”SQLのカーソルのコメントセクションで言及してください 」と返信します。


    1. 警告:Officeバージョン2204はAccessアプリケーションを壊す可能性があります

    2. 最初の行に参加する方法

    3. カタログ、スキーマ、ユーザー、およびデータベースインスタンス間の関係

    4. 選択ステートメントの書き方