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

PL / SQLコレクション:Oracleデータベースのネストされたテーブル

    PL/SQLブロック内にネストされた表を作成する方法

    PL/SQLコレクションシリーズの2番目のチュートリアルへようこそ。このチュートリアルでは、「ネストされたテーブル」である最初のタイプのコレクションについて学習します。テーブル内のテーブルは、考え出すことができる最も単純な定義であり、別のテーブル内に埋め込まれているテーブルは、ネストされたテーブルの名前が示すとおりであるため、あらゆる点で正しいです。

    ただし、コレクション「ネストされたテーブル」をより凝った技術的な方法で定義する必要がある場合、ネストされたテーブルは、永続的で制限のない1次元構造であると言えます。これらは、SQLおよびPL / SQLでアクセス可能であり、表、レコード、およびオブジェクト定義で使用できます。これは無制限のPL/SQLコレクションであるため、ランダムな順序のセットに任意の数の要素を保持できます。

    定義
    ネストされたテーブルは、永続的で制限のない1次元構造です。これらは、SQLおよびPL / SQLでアクセス可能であり、表、レコード、およびオブジェクト定義で使用できます。これは無制限のPL/SQLコレクションであるため、順序付けられていないセット内の任意の数の要素を保持できます。

    推奨読書:PL/SQLコレクションの概要

    ネストされた表は、PL / SQLブロック内またはデータベース内にコレクション・タイプ・オブジェクト(スキーマ・オブジェクト)として作成できます。前者のネストされたテーブルの場合、インデックスタイプや上限のない1次元配列として動作します。

    したがって、当面は、PL / SQLブロック内にネストされた表を作成する方法に集中し、残りは次のチュートリアルに残しておきましょう。

    ネストされたテーブルを作成するための構文

    DECLRE 
    TYPE nested_table_name IS TABLE OF element_type [NOT NULL];
    

    この構文については、YouTubeチャンネルのビデオチュートリアルで詳しく説明しました。そのビデオを参照することを強くお勧めします。

    例:PL /SQLブロック内にネストされた表を作成する方法

    次の例は、ネストされたテーブルを作成する方法を示すためだけのものであり、特別なことは何もありません。

    SET SERVEROUTPUT ON;
    DECLARE
       TYPE my_nested_table   IS TABLE OF number;
        var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
    BEGIN
       DBMS_OUTPUT.PUT_LINE ('Value Stored at index 1 in NT is ' ||var_nt (1)); 
       DBMS_OUTPUT.PUT_LINE ('Value Stored at index 2 in NT is ' ||var_nt (2));
       DBMS_OUTPUT.PUT_LINE ('Value Stored at index 3 in NT is ' ||var_nt (3));
    END;
     /
    

    上記の例は、ネストされたテーブルを作成し、「my_nested_table」(行番号3)という名前を付けた非常に単純な例です。次の行(行番号4)では、同じコレクションのインスタンスを作成し、それを使用してネストされたテーブルを初期化し、データを格納しました。実行セクションでは、配列で行っていたのと同じ方法で、インデックス番号を使用して保存されたデータに個別にアクセスします。

    インデックスを使用して手動でデータにアクセスする代わりに、ループを使用して、コレクションのネストされたテーブルの各要素を循環させることができます。

     SET SERVEROUTPUT ON;
     DECLARE
       TYPE my_nested_table   IS TABLE OF number;
       var_nt  my_nested_table :=  my_nested_table (9,18,27,36,45,54,63,72,81,90);
     BEGIN
       FOR i IN 1..var_nt.COUNT
       LOOP
         DBMS_OUTPUT.PUT_LINE ('Value stored at index '||i||'is '||var_nt(i));
       END LOOP;
     END;
     /
    

    これは、データを循環させ、Forループを使用してデータをユーザーに表示するネストされたテーブルを作成する方法のもう1つの例です。

    PL/SQLブロックにネストされた表を作成する方法は以上です。次のチュートリアルのように、データベースコレクションオブジェクトとしてネストされたテーブルを作成する方法と、データベースに格納されているネストされたテーブルの情報を取得するために使用できるすべてのデータディクショナリビューについて学習します。

    それで全部です。読んでくれてありがとう&素晴らしい一日を!


    1. Selectステートメントでの変数の宣言と設定

    2. Microsoft SQL Serverで日付のみを使用してDATETIMEフィールドをクエリするにはどうすればよいですか?

    3. JSON_SET()–MySQLのJSONドキュメントに値を挿入または更新します

    4. SUBTIME()の例– MySQL