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

Oracleデータベースの下限と上限のあるFORALLステートメント

    下界と下界の条項を含むFORALLステートメント

    前のチュートリアルでは、DMLクエリを最適化するためにFORALLステートメントで使用できる3つのバインドされた句があることを学びました。これらの3つのバインドされた句から、最初の句、つまりこのチュートリアルの下限と上限について説明します。

    FORALLステートメントのLower&Upper Bound句とは何ですか?

    名前が示すように、Lower&Upper Bound句では、コレクションの連続するインデックス番号の有効な範囲を指定する必要があります。

    FORALLステートメントでLower&Upper Bound句を使用するためのルールはありますか?

    Lower&Upper Bound句は、DMLステートメントで参照しているコレクションがの場合にのみ使用できます。 。参照コレクションがまばらである場合は、今後のチュートリアルで説明する他のバインドされた句を使用することをお勧めします。

    プログラムを正常に実行するには、上記の下限と上限の句の規則に加えて、FORALLステートメントのすべての規則に従っていることを確認する必要があります。 FORALLステートメントの詳細についてはこちらをご覧ください。

    OracleDatabaseでLower&UpperBound句を使用したFORALLステートメントの例を見てみましょう。

    しかし、例にジャンプする前に、1つのことを理解する必要があります。 FORALLステートメントは、一括収集句と同じように機能しますが、逆の方法で機能します。 たとえば、一括収集では、テーブルからデータをフェッチしてコレクションに格納していましたが、FORALLステートメントでは、コレクションからデータをフェッチしてテーブルに格納します。

    このデモンストレーションでは、Lower&UpperBound句を使用したFORALLステートメントの概念を理解するために3つのことを行います。これらの3つは次のとおりです。

    1. テーブルを作成します。

    まず、テーブルを作成します。このテーブルを使用して、コレクションからフェッチするデータをダンプします。

    1. コレクションを作成して入力します。

    すでにいくつかのデータを含むコレクションがある場合、この手順はオプションです。そうでなければ、私について来てください。デモンストレーションでは、コレクションを作成してデータを入力します。

    1. FORALLステートメントを記述します。

    テーブルとコレクションの準備ができたら、FORALLステートメントを記述します。デモンストレーションでは、コレクションからデータをフェッチしてテーブルに格納するFORALLステートメントを記述します。これは、INSERTDMLを使用したFORALLステートメントのデモンストレーションにもなります。

    下限と上限を指定したPL/SQLFORALL文の例を見てみましょう。

    SET SERVEROUTPUT ON;
    CREATE TABLE tut_77 (
        Mul_tab    NUMBER(5)
    );
    

    これが、データを保持するテーブルになります。次に、PL/SQLブロックを記述します。

    DECLARE
    	-- Declare the collection
        TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
        col_var My_Array;
    	--Declare a variable for holding the total number of records of the table
        tot_rec NUMBER;
    BEGIN
        --Populate the collection
        FOR i IN 1..10 LOOP
            col_var (i) := 9*i;
        END LOOP;
        -- Write the FORALL statement.
        FORALL idx IN 1..10
            INSERT INTO tut_77 (mul_tab)
            VALUES (col_var (idx));
        --Get the total number of records from the table     
        SELECT count (*) INTO tot_rec FROM tut_77;
        DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec);
    END;
    /
    

    宣言セクションの説明

    宣言セクション このコードでは、コレクション変数とともに「my_Array」という名前の連想配列を宣言しています。また、Numberデータ型のtot_recという名前の追加の変数。この変数は、テーブルに保存されているレコードの総数を保持します。

    実行セクションでは、3つのタスクを実行しました。まず、FORループを使用して、コレクションに九九を入力しました。次に、FORALLステートメントを使用して、コレクションからデータを取得し、作成したテーブルに格納しました。 3番目に、SELECT-INTOステートメントで変数tot_recを使用して、テーブルに格納されている行の総数を表示しました。

    私はまた、同じトピックに関するビデオを作成しました。ここでは、上記のコードを1行ずつ詳細に説明しました。ぜひチェックしてみてください。

    これは、OracleDatabaseのLower&UpperBound句を使用したPL/SQLFORALLステートメントのチュートリアルです。あなたが見て楽しんだことを願っています。このブログをソーシャルメディアで友達といいねして共有してください。私のFacebookページでも私に連絡できます。

    ありがとう、そして素晴らしい一日を。


    1. OracleのNANVL()関数

    2. MySQLEnterpriseMonitorを使用したデータベースの監視

    3. AmazonAuroraについて知らなかった4つのこと

    4. SQL ServerFORXMLパ​​スは繰り返しノードを作成します