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

OracleデータベースでPL/SQLブロック・メンバーとしてVARRAYを作成する方法

    今日は、Oracle DatabaseでVARRAYを作成する方法を学ぶために、いくつかの実用的なデモンストレーションを行います。VARRAYに必要なすべての理論については、最後のチュートリアルにアクセスしてください。いつものように、私は例をできるだけ単純に保つように努めます。ですから、プログラミングに不慣れな方でも、心配しないでください。

    以前、PL / SQL VARRAYの概要で、ネストされたテーブルVARRAYのように作成できるものについて説明しました

    • PL/SQLブロックのメンバーとして
    • データベースオブジェクトとして。

    今日は、PL / SQLブロックのメンバーとしてVARRAYを作成し、残りを今後のチュートリアルに残す方法を学習します。

    ステップ1:PL/SQLブロック内にVarrayを定義する

    VARRAYは、PL/SQLブロックの宣言セクション内でのみ定義できます。

     	SET SERVEROUTPUT ON;
    	DECLARE
    	    TYPE inBlock_vry IS VARRAY (5) OF NUMBER;
    

    上記のコードでは、VARRAYを作成し、inBlock_vryという名前を付けました。このVARRAYは、Numberデータ型の5つの要素を保持できます。

    ステップ2:Varrayを初期化する

    varrayの初期化は、コレクション変数を使用して簡単に実行できます。 VARRAYを初期化するには、最初にコレクション変数を定義してから、それを初期化に使用します。

    vry_obj inBlock_vry  :=  inBlock_vry();

    上記のコードでは、vry_objという名前のコレクション変数を作成し、それを使用してvarrayinBlock_vryを初期化しました。

    情報:
    一部の書籍では、コレクション変数をコレクションオブジェクトと呼んでいます。どちらも同じであるため、混乱しないでください

    ステップ3:VARRAYにデータを挿入する方法

    varrayにデータを挿入することは、他のプログラミング言語の配列にデータを挿入することと非常に似ています。インデックス番号を使用してデータをVARRAYの各セルに直接挿入するか、LOOPを使用してVARRAYにデータを入力することができます。

    セルのインデックスを使用してVARRAYにデータを挿入する方法

    セルの構造PL/SQLコレクションは、インデックスと呼ばれる添え字を持つセルで構成されていることがわかっています。このインデックスを使用して、データをVARRAYに挿入できます。

    	BEGIN
    		vry_obj.EXTEND(5); 
    		vry_obj(1):= 10*2;
    		DBMS_OUTPUT.PUT_LINE(vry_obj(1));    
    	END;
    	/
    

    実行セクション-1

    上記のコードでは、PL/SQLブロックの実行セクションを記述しました。これは、3つの実行可能ステートメントで構成されています。これらの3つのステートメントは–

    6行目:ステートメント1

    最初のステートメントはEXTENDプロシージャ呼び出しです。このステートメントでは、EXTENDプロシージャを使用してVARRAYの各セルにメモリを割り当てています。

    7行目:ステートメント2

    2番目のステートメントでは、数値(算術乗算式から導出された値)をVARRAYの最初のセル(インデックス番号1のセル)に割り当てています。

    情報:
    PL / SQLコレクションでは、セルのVARRAYインデックス番号は1で始まりますが、配列内のセルのインデックス番号は0で始まります。

    8行目:ステートメント3

    3番目のステートメントは、VARRYの1つのセルに格納した値をユーザーに表示する出力ステートメントです。

    これが、VARRAYの個々のセルに格納されている値を格納および表示する方法です。このプロセスは、VARRAYが短い場合にのみ有効です。そうでなければ、それは効率的な方法ではありません。 Varrayにデータを挿入する別の方法は、ループを使用することです。

    推奨資料:PL/SQLループの概要

    PL/SQLループを使用してVARRAYにデータを挿入する方法

    コレクションのデータを処理する最も一般的な方法は、ループを使用することです。ほとんどのプログラマーは、ループを使用してあらゆる種類の配列のデータを循環させることに慣れています。これは、コードが簡単で時間もかからず、コード行が少ないため、コードがすっきりと読みやすくなるためです。要するに、それは簡単で効率的です。

    	BEGIN
    	FOR i IN 1 .. vry_obj.LIMIT
    	LOOP
     		vry_obj.EXTEND;
    		vry_obj (i):= 10*i;    
    		DBMS_OUTPUT.PUT_LINE (vry_obj (i));    
    	END LOOP;
    	END;
    	/
    

    実行セクション-2

    上記のコードについては、こちらで視聴できるYouTubeチャンネルのビデオチュートリアルで詳しく説明しました。

    それでも混乱を最小限に抑えるために、ここでは、上記の実行セクション(実行セクション– 2)で使用される2つの主要な機能である–制限と拡張について説明します。

    上記のコードの動作を理解するには、PL /SQLforループを理解する必要があります。嬉しいことに、For-Loopに関する詳細なチュートリアルを行いました。これは、ここで読むことができます。

    制限(6行目): Limitは、VARRAYで許可されている要素の最大数を返す収集メソッドです。この場合、VARRAYで許可される要素の最大数は5(3行目)であり、これがFor-Loopの上限になります。

    延長(8行目): Extendは、メモリを割り当てるために使用され、VARRAYに要素を追加するプロシージャです。引数なしで使用した場合(実行セクション-2行8)、単一のnull要素を追加し、引数EXTEND(n)とともに使用した場合(実行セクション-1行6)、コレクションにn個の数値を追加します。ここで、nは、プロシージャEXTENDの引数として指定した整数です。

    これは、PL/SQLブロックのメンバーとしてOracleDatabaseにコレクションVARRAYを作成する方法に関するPL/SQLチュートリアルです。このブログを高く評価し、友達と共有して、私のチャンネルに登録してください。このようなチュートリアルはまだたくさんありません。ありがとう&素晴らしい一日を!


    1. ole-dbのOracleプロバイダーのバージョンを確認する方法。 OraOLEDB.Oracleプロバイダー

    2. SQLite Avg()のしくみ

    3. SQLServerエージェント拡張機能をAzureDataStudioにインストールします

    4. テーブルが作成されないsqliteandroid