PL/SQL - 配列

こんにちは、将来のプログラマーさんたち!今日は、PL/SQLの配列の面白い世界に飛び込みます。あなたの近所の親切なコンピュータサイエンスの先生として、私はこの旅をステップバイステップで案内します。プログラミングが初めての方也不用担心——基本から始めて、少しずつ進んでいきましょう。では、仮想のメモ pads を手に取り、始めましょう!

PL/SQL - Arrays

PL/SQLでの配列とは?

深淵に飛び込む前に、まず配列とは何かを理解しましょう。あなたがたくさんのチョコレートを持っていて、デスクの上に散らばらせずにきれいな小さな箱に入れることを決めたとします。その箱が配列です——同じタイプの複数のアイテムを保持するコンテナです。

PL/SQLでは、配列は同じデータ型の要素の集合です。これにより、単一の変数名で複数の値を保存および操作することができます。便利ですね?

PL/SQLでの配列の種類

PL/SQLには3つの種類の配列が提供されています:

  1. 協応配列(インデックスバイテーブル)
  2. ネスト配列
  3. 変動サイズ配列(VARRAY)

まずはVARRAYに焦点を当ててみましょう。初心者の方にとっては素晴らしい出発点です。

Varray型の作成

VARRAY(変動サイズ配列)は、PL/SQLにおける配列の種類で、最大サイズの制限があります。これは、一定の数の区画を持つチョコレートボックスを買うことと同じで、ボックスが保持できる以上のチョコレートを追加することはできません!

以下のようにVARRAY型を作成します:

CREATE OR REPLACE TYPE number_array AS VARRAY(5) OF NUMBER;

これを分解すると:

  • CREATE OR REPLACE TYPE:これは、Oracleに新しい型を作成または既存のものを置き換えることを指示します。
  • number_array:これは、私たちが新しい型に与える名前です。
  • AS VARRAY(5):これで、最大5要素のVARRAYとして定義しています。
  • OF NUMBER:この配列の各要素はNUMBERデータ型です。

では、このVARRAYをPL/SQLブロックでどのように使用するか見てみましょう:

DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('要素 ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

出力:

要素 1: 10
要素 2: 20
要素 3: 30
要素 4: 40
要素 5: 50

このコードを分解すると:

  1. my_numbersをVARRAYとして宣言し、5つの数字で初期化します。
  2. FORループを使用して配列を反復します。
  3. my_numbers.COUNTは配列内の要素数を返します。
  4. my_numbers(i)を使用して各要素にアクセスし、表示します。

VARRAYでの作業

作成して初期化したVARRAYを用いて、行える操作を探ってみましょう。

要素の追加

忘れてはならないのは、定義した最大サイズを超える要素を追加することはできないことです。要素を追加してみましょう:

DECLARE
my_numbers number_array := number_array(10, 20, 30);
BEGIN
my_numbers.EXTEND;
my_numbers(4) := 40;

FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('要素 ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

出力:

要素 1: 10
要素 2: 20
要素 3: 30
要素 4: 40

ここでは、EXTENDを使用して配列のサイズを1増やし、新しい要素に値を割り当てています。

要素の削除

配列の最後から要素を削除することもできます:

DECLARE
my_numbers number_array := number_array(10, 20, 30, 40, 50);
BEGIN
my_numbers.TRIM(2);  -- 最後の2要素を削除

FOR i IN 1..my_numbers.COUNT LOOP
DBMS_OUTPUT.PUT_LINE('要素 ' || i || ': ' || my_numbers(i));
END LOOP;
END;
/

出力:

要素 1: 10
要素 2: 20
要素 3: 30

TRIMメソッドは配列の最後から要素を削除します。

VARRAYの一般的なメソッド

以下は、VARRAYで使用できる一般的なメソッドの表です:

メソッド 説明
COUNT 配列内の要素数を返します
FIRST 最初の要素のインデックスを返します
LAST 最後の要素のインデックスを返します
LIMIT 配列の最大サイズを返します
EXTEND 配列のサイズを増やします
TRIM 配列のサイズを減らします
EXISTS 特定のインデックスに要素があるかを確認します

実用的な例:学生の成績

実際の例で知識を活用してみましょう。あなたが(私のように)先生で、生徒の平均点を計算したいとします:

CREATE OR REPLACE TYPE grade_array AS VARRAY(5) OF NUMBER;

DECLARE
student_grades grade_array := grade_array(85, 90, 78, 92, 88);
total_score NUMBER := 0;
average_score NUMBER;
BEGIN
-- 合計点を計算
FOR i IN 1..student_grades.COUNT LOOP
total_score := total_score + student_grades(i);
END LOOP;

-- 平均点を計算
average_score := total_score / student_grades.COUNT;

DBMS_OUTPUT.PUT_LINE('平均点: ' || ROUND(average_score, 2));
END;
/

出力:

平均点: 86.6

この例では、VARRAYを使用して生徒の成績を保存し、平均点を計算して表示しています。

結論

おめでとうございます!PL/SQLの配列の世界への第一歩を踏み出しました。VARRAYの基本、作成方法、操作方法、そして実際的应用までをカバーしました。配列はチョコレートボックスのように、データを整理し、簡単にアクセスできるようにします。プログラミングの旅を続ける中で、配列は非常に有用なツールとなります。

練習を続け、好奇心を持ち、実験を恐れずに。間もなく、あなたはPL/SQLスキルで誰もが驚く存在になるでしょう!(申し訳ありませんが、先生のユーモアを忍び込ませてしまいました。)

未来のデータベースの魔法使いたち、ハッピーコーディングを!

Credits: Image by storyset