これまで、テーブルベースおよびカーソルベースのレコードデータ型変数を作成する方法を見てきました。残っているのは、今日のチュートリアルで取り上げるユーザー定義のレコードデータ型です。
名前が示すように、ユーザー定義レコードは、構造がユーザーによって定義されるレコード変数です。これは、構造がそれぞれのテーブルまたはカーソルから派生するテーブルベースまたはカーソルベースのレコードとは異なります。これは、ユーザー定義レコードを使用すると、レコード変数の構造を完全に制御できることを意味します。
ユーザー定義レコード変数の作成プロセスは、2つの部分に分かれています。レコードを定義する前に、まずレコード変数のTYPEを定義する必要があります。このTYPEは、User Define Record変数のベースになり、その構造を駆動するのに役立ちます。 TYPEが正常に宣言されると、それを使用してユーザー定義レコード変数を作成できます。
Oracleデータベースのユーザー定義レコードの構文
以下は、ユーザー定義レコードデータ型変数のTYPEを作成するための構文です。
TYPE type_name IS RECORD ( field_name1 datatype 1, field_name2 datatype 2, ... field_nameN datatype N );
TYPEを宣言すると、レコード変数を作成する準備が整います。この変数は、それが作成されたタイプのすべてのプロパティを取得します。そして、これがユーザー定義レコードデータ型変数を作成するための構文です。
record_name TYPE_NAME;
テーブルベースまたはカーソルベースのレコード変数とは異なり、レコード変数を宣言するためにここで%ROWTYPE属性を使用する必要がないことに気づきましたか?
上記の構文の詳細な説明については、私のYouTubeチャンネルでビデオチュートリアルを見ることができます。
例:ユーザー定義のレコードデータ型変数を作成する方法。
ステップ1:ユーザー定義レコード変数のタイプを宣言する
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name DEPARTMENTS.department_name%TYPE );
ステップ2:ユーザー定義レコード変数を宣言する
TYPEを作成すると、ユーザー定義のレコード変数を作成する準備が整います。
var1 rv_dept;
上記のPL/SQL文は、VAR1という名前のレコード変数を作成します。
ステップ3:ユーザー定義レコード変数を初期化します。
ユーザー定義のレコード変数は、複数の方法で初期化できます。たとえば、代入変数を使用してレコード変数に値を割り当てることによってレコード変数を直接初期化するか、SELECT-INTOステートメントを使用してテーブルの列に格納されている値をフェッチすることができます。それでは、例を進めて、SELECT-INTOステートメントを使用してユーザー定義のレコード変数を初期化する方法を学びましょう。
次に、実行セクションを作成します。実行セクションには、employeesテーブルとdepartmentsテーブルを結合し、特定の従業員の名と部門名を返すSELECTステートメントがあります。
BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END;
ここにあるselectステートメントは、従業員IDが100の従業員の名と部門名を返します。両方の列のデータは異なるテーブルからのものであるため、ここではJOINを使用しました。クエリには2つの異なるテーブルが含まれるため、このような状況ではテーブルベースのレコード変数を使用できません。したがって、実行可能なソリューションはユーザー定義のレコード変数です。
上記のすべてのコードのチャンクを1つの匿名のPL/SQLブロックに結合しましょう。
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name departments.department_name%type ); var1 rv_dept; BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END; /
これが、Oracleデータベースでユーザー定義レコードのデータ型変数を作成する方法です。あなたが読書を楽しんで、何か新しいことを学んだことを願っています。また、毎月ランダムに選ばれた1人の勝者にRebellionRiderの商品をプレゼントしているので、このブログをソーシャルで友達と共有してください。
それはすべての人々に感謝し、素晴らしい一日を過ごします!