Plsql-object-oriented
PL/SQL-オブジェクト指向
この章では、オブジェクト指向のPL/SQLについて説明します。 PL/SQLでは、オブジェクト型を定義できます。これにより、Oracleでオブジェクト指向データベースを設計できます。 オブジェクト型を使用すると、複合型を作成できます。 オブジェクトを使用すると、特定のデータ構造とそれを操作するためのメソッドを持つ実世界のオブジェクトを実装できます。 オブジェクトには属性とメソッドがあります。 属性はオブジェクトのプロパティであり、オブジェクトの状態を保存するために使用されます。メソッドはその動作をモデル化するために使用されます。
オブジェクトは、CREATE [OR REPLACE] TYPEステートメントを使用して作成されます。 以下は、いくつかの属性で構成される単純な address オブジェクトを作成する例です-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
もう1つのオブジェクト customer を作成して、オブジェクト指向の感覚を持たせるために attributes と methods を一緒にラップします。
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
オブジェクトのインスタンス化
オブジェクトタイプを定義すると、オブジェクトの青写真が提供されます。 このオブジェクトを使用するには、このオブジェクトのインスタンスを作成する必要があります。 次のようにインスタンス名と*アクセス演算子(。)*を使用して、オブジェクトの属性とメソッドにアクセスできます-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
メンバーメソッド
- メンバーメソッド*は、オブジェクトの*属性*を操作するために使用されます。 オブジェクト型を宣言しながら、メンバーメソッドの宣言を提供します。 オブジェクト本体は、メンバーメソッドのコードを定義します。 オブジェクト本体は、CREATE TYPE BODYステートメントを使用して作成されます。
- コンストラクタ*は、値として新しいオブジェクトを返す関数です。 すべてのオブジェクトには、システム定義のコンストラクターメソッドがあります。 コンストラクターの名前はオブジェクトタイプと同じです。 たとえば-
- 比較方法*はオブジェクトの比較に使用されます。 オブジェクトを比較するには2つの方法があります-
マップ方式
- Mapメソッド*は、値が属性の値に依存するように実装された関数です。 たとえば、顧客オブジェクトの場合、2人の顧客の顧客コードが同じであれば、両方の顧客が同じになる可能性があります。 したがって、これら2つのオブジェクト間の関係は、コードの値に依存します。
注文方法
- Orderメソッド*は、2つのオブジェクトを比較するためのいくつかの内部ロジックを実装します。 たとえば、長方形オブジェクトの場合、長方形の両側が大きい場合、長方形は別の長方形よりも大きくなります。
Mapメソッドを使用する
次の長方形オブジェクトを使用して上記の概念を理解してみましょう-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
型本体の作成-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
今長方形オブジェクトとそのメンバー関数を使用して-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
Orderメソッドを使用する
現在、注文方法を使用して*同じ効果を達成できます*。 順序メソッドを使用して長方形オブジェクトを再作成しましょう-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
型本体の作成-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
長方形オブジェクトとそのメンバー関数を使用して-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
PL/SQLオブジェクトの継承
PL/SQLでは、既存のベースオブジェクトからオブジェクトを作成できます。 継承を実装するには、ベースオブジェクトを NOT FINAL として宣言する必要があります。 デフォルトは FINAL です。
次のプログラムは、PL/SQLオブジェクトの継承を示しています。 TableTop という名前の別のオブジェクトを作成してみましょう。これはRectangleオブジェクトから継承されます。 このために、我々はベース_rectangle_オブジェクトを作成する必要があります-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
基本型本体の作成-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
子オブジェクト_tabletop_の作成-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
子オブジェクト_tabletop_のタイプボディの作成
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
_tabletop_オブジェクトとそのメンバー関数を使用して-
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-
PL/SQLの抽象オブジェクト
例えば、
上記のコードがSQLプロンプトで実行されると、次の結果が生成されます-