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

Oracleデータベースでユーザー定義のレコードデータ型変数を作成する方法

    これまで、テーブルベースおよびカーソルベースのレコードデータ型変数を作成する方法を見てきました。残っているのは、今日のチュートリアルで取り上げるユーザー定義のレコードデータ型です。

    名前が示すように、ユーザー定義レコードは、構造がユーザーによって定義されるレコード変数です。これは、構造がそれぞれのテーブルまたはカーソルから派生するテーブルベースまたはカーソルベースのレコードとは異なります。これは、ユーザー定義レコードを使用すると、レコード変数の構造を完全に制御できることを意味します。

    ユーザー定義レコード変数の作成プロセスは、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の商品をプレゼントしているので、このブログをソーシャルで友達と共有してください。

    それはすべての人々に感謝し、素晴らしい一日を過ごします!


    1. OracleのROWIDTONCHAR()関数

    2. クロスアプライxmlクエリは、xmlドキュメントが大きくなるにつれてパフォーマンスが指数関数的に低下します

    3. 一定時間後にMySQLレコードを削除する方法

    4. MySQLの保護-安全なインストールのためのデータアクセス権限の利用