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ブロックにネストされた表を作成する方法は以上です。次のチュートリアルのように、データベースコレクションオブジェクトとしてネストされたテーブルを作成する方法と、データベースに格納されているネストされたテーブルの情報を取得するために使用できるすべてのデータディクショナリビューについて学習します。
それで全部です。読んでくれてありがとう&素晴らしい一日を!