Oracle Tipe Objek PL/SQL: CREATE TYPE dengan Contoh

โšก Ringkasan Cerdas

Tipe objek dalam PL/SQL membawa pemrograman berorientasi objek ke Oracle, memungkinkan Anda memodelkan entitas dunia nyata dengan atribut dan metode. Mereka mendukung konstruktor, pewarisan, dan perbandingan kesamaan, sehingga satu tipe tingkat skema dapat menyimpan dan memproses data terstruktur.

  • ๐Ÿงฑ Komponen Tipe Objek: Suatu tipe objek menggabungkan atribut yang menyimpan data dan anggota, atau metode, yang mendefinisikan logika pemrosesannya.
  • ๏ธ Buat Objek: Tipe objek dibuat pada tingkat skema dengan perintah CREATE TYPE, dan metode-metodenya didefinisikan dalam perintah CREATE TYPE BODY yang terpisah.
  • ๐Ÿ”ง Konstruktor: Setiap tipe objek memiliki konstruktor implisit yang dinamai sesuai dengan tipe tersebut, dan Anda dapat mendefinisikan konstruktor eksplisit untuk mengatur nilai default.
  • ๐Ÿงฌ Warisan: Tipe induk NOT FINAL diperluas dengan UNDER, sehingga subtipe mewarisi semua atribut dan anggota induknya.
  • ๏ธ Persamaan: Fungsi anggota ORDER membandingkan dua instance objek dan mengembalikan angka negatif, nol, atau positif.
  • ๐Ÿค– Bantuan AI: Asisten AI seperti GitHub Copilot membuat draf definisi CREATE TYPE, konstruktor, dan metode ORDER dari sebuah komentar.

Oracle Tipe objek PL/SQL yang menunjukkan perintah CREATE TYPE beserta atribut dan metodenya.

Apa Tipe Objek di PL/SQL?

Pemrograman Berorientasi Objek sangat cocok untuk membangun komponen yang dapat digunakan kembali dan aplikasi yang kompleks. Program diorganisir berdasarkan "objek" daripada "aksi"; artinya, program dirancang untuk bekerja dan berinteraksi dengan seluruh objek, bukan hanya satu aksi. Pendekatan ini memungkinkan programmer untuk mengisi dan memanipulasi detail pada tingkat entitas objek.

Gambar di bawah ini menggambarkan contoh tipe objek di mana rekening bank diperlakukan sebagai entitas objek. Atribut objek menyimpan nilai โ€” untuk rekening bank, nilai-nilai tersebut adalah nomor rekening, saldo bank, dan sebagainya โ€” sedangkan metode objek menjelaskan tindakan seperti menghitung suku bunga atau menghasilkan laporan bank, yang masing-masing membutuhkan proses untuk diselesaikan.

Rekening bank dimodelkan sebagai tipe objek dengan atribut dan metode dalam PL/SQL.

In PL / SQLPemrograman berorientasi objek didasarkan pada tipe objek. Tipe objek dapat mewakili entitas dunia nyata apa pun. Bagian-bagian di bawah ini membahas tipe objek, komponen-komponennya, dan cara membuat serta menggunakannya.

Komponen Jenis Objek

Tipe objek PL/SQL pada dasarnya terdiri dari dua komponen.

  1. atribut
  2. Anggota/Metode

atribut

Atribut adalah kolom atau bidang tempat data disimpan. Setiap atribut dipetakan ke tipe data yang mendefinisikan tipe pemrosesan dan penyimpanan untuk atribut tersebut. Suatu atribut dapat berupa tipe data apa pun yang valid. Tipe data PL/SQL, atau bisa juga dari tipe objek lain.

Anggota/Metode

Anggota, atau metode, adalah subprogram Didefinisikan di dalam tipe objek. Parameter ini tidak digunakan untuk menyimpan data; sebaliknya, parameter ini mendefinisikan pemrosesan yang dilakukan di dalam tipe objek โ€” misalnya, memvalidasi data sebelum mengisi objek. Parameter ini dideklarasikan dalam spesifikasi tipe objek dan didefinisikan dalam badan tipe objek. Badan bersifat opsional: jika tidak ada anggota, tipe objek tidak memiliki bagian badan.

Buat Objek di Oracle

Tipe objek tidak dapat dibuat pada tingkat subprogram; tipe objek hanya dapat dibuat pada tingkat skema. Setelah tipe objek didefinisikan dalam skema, tipe objek tersebut dapat digunakan dalam subprogram. Tipe objek dibuat menggunakan pernyataan โ€œCREATE TYPEโ€, dan badan tipe hanya dapat dibuat setelah tipe objek tersebut ada.

Tangkapan layar di bawah ini menunjukkan sintaks CREATE TYPE untuk spesifikasi objek dan sintaks CREATE TYPE BODY yang mendefinisikan metode-metodenya.

Sintaks CREATE TYPE mendefinisikan spesifikasi objek dengan atribut di Oracle Sintaks CREATE TYPE BODY mendefinisikan metode dari tipe objek PL/SQL.

CREATE TYPE<object_type_name> AS OBJECT
(
<attribute_l><datatype>,
.
.
);
/
CREATE TYPE BODY<object_type_name> AS OBJECT
(
MEMBER[PROCEDURE|FUNCTION]<member_name> 
IS
<declarative section>
BEGIN
<execution part>
END;
.
.
);
/

Penjelasan Sintaks:

  • Sintaks di atas menunjukkan pembuatan OBJECT dengan atribut dan BODY OBJECT dengan metode.
  • Metodenya juga bisa kelebihan beban di badan objek.

Inisialisasi Deklarasi Tipe Objek

Seperti komponen lain dalam PL/SQL, tipe objek harus dideklarasikan sebelum digunakan dalam program. Setelah tipe objek dibuat, tipe objek tersebut dapat digunakan di bagian deklaratif subprogram untuk mendeklarasikan variabel dengan tipe objek tersebut.

Setiap kali sebuah variabel dideklarasikan sebagai tipe objek, pada saat eksekusi (runtime) akan dibuat sebuah instance baru dari tipe objek tersebut, dan instance yang baru dibuat ini akan dirujuk oleh nama variabel tersebut. Dengan cara ini, satu tipe objek dapat menyimpan beberapa nilai di bawah instance yang berbeda.

Tangkapan layar di bawah ini menunjukkan sebuah variabel yang dideklarasikan sebagai tipe objek di dalam sebuah blok PL/SQL.

Mendeklarasikan variabel bertipe objek di bagian deklaratif blok PL/SQL

DECLARE
<variable_name> <object_type_name>;
BEGIN
.
.
END;
/

Penjelasan Sintaks:

  • Sintaks di atas menunjukkan deklarasi sebuah variabel sebagai tipe objek di bagian deklaratif.

Setelah variabel dideklarasikan sebagai tipe objek dalam subprogram, variabel tersebut secara atomik bernilai null โ€” seluruh objek itu sendiri bernilai null. Objek tersebut harus diinisialisasi dengan nilai sebelum dapat digunakan dalam program. Objek diinisialisasi menggunakan konstruktor.

Konstruktor adalah metode implisit dari sebuah objek yang dapat dirujuk dengan nama yang sama dengan tipe objek tersebut. Tangkapan layar di bawah ini menunjukkan inisialisasi sebuah instance tipe objek.

Menginisialisasi instance tipe objek ke null menggunakan konstruktornya.

DECLARE
<variable_name> <object_type_name>; 
BEGIN
<variable_name>:=<object_type_name>();
END;
/

Penjelasan Sintaks:

  • Sintaks di atas menunjukkan inisialisasi instance tipe objek dengan nilai null.
  • Objek itu sendiri tidak lagi bernilai null setelah diinisialisasi, tetapi atribut di dalam objek tetap bernilai null sampai nilai diberikan kepadanya.

Konstruktor

Konstruktor adalah metode implisit dari sebuah objek yang dapat dirujuk dengan nama yang sama dengan tipe objek tersebut. Setiap kali objek dirujuk untuk pertama kalinya, konstruktor ini dipanggil secara implisit.

Anda juga dapat menginisialisasi objek menggunakan konstruktor ini. Konstruktor dapat didefinisikan secara eksplisit dengan mendefinisikan anggota dalam badan tipe objek dengan nama yang sama dengan tipe objek tersebut.

Contoh 1: Pada contoh berikut, kita menggunakan anggota tipe objek untuk memasukkan data ke dalam tabel emp dengan nilai ('RRR', 1005, 20000, 1000) dan ('PPP', 1006, 20000, 1001). Setelah data dimasukkan, kita menampilkannya menggunakan anggota tipe objek. Kita juga menggunakan konstruktor eksplisit untuk mengisi id manajer dengan nilai default 1001 untuk data kedua.

Kami melaksanakannya dalam langkah-langkah berikut.

  • Langkah 1: Buat tipe Objek dan isi tipe Objek.
  • Langkah 2: Buat blok anonim untuk memanggil tipe objek melalui konstruktor implisit untuk emp_no 1005.
  • Langkah 3: Buat blok anonim untuk memanggil tipe objek melalui konstruktor eksplisit untuk emp_no 1006.

Langkah 1) Buat tipe Objek dan isi tipe Objek.

Tangkapan layar di bawah ini menunjukkan spesifikasi tipe objek emp_object yang sedang dibuat beserta atribut dan anggotanya.

Membuat spesifikasi tipe objek emp_object dengan atribut dan anggota.

CREATE TYPE emp_object AS OBJECT(
emp_no NUMBER,
emp_name VARCHAR2(50),
salary NUMBER,
manager NUMBER,
CONSTRUCTOR FUNCTION emp_object(p_emp_no NUMBER, p_emp_name VARCHAR2,
p_salary NUMBER) RETURN SELF AS RESULT),
MEMBER PROCEDURE insert_records,
MEMBER PROCEDURE display_records);
/

Screenshot di bawah ini menunjukkan pembuatan body tipe emp_object dengan konstruktor eksplisit dan prosedur anggota.

Mendefinisikan isi tipe emp_object dengan konstruktor eksplisit dan prosedur anggota.

CREATE OR REPLACE TYPE BODY emp_object AS
CONSTRUCTOR FUNCTION emp_object(p_emp_no NUMBER,p_emp_name VARCHAR2,
p_salary NUMBER)
RETURN SELF AS RESULT
IS
BEGIN
Dbms_output.put_line('Constructor fired..');
SELF.emp_no:=p_emp_no;
SELF.emp_name:=p_emp_name;
SELF.salary:=p_salary;
SELF.manager:=1001;
RETURN;
END;
MEMBER PROCEDURE insert_records
IS
BEGIN
INSERT INTO emp VALUES(emp_no,emp_name,salary,manager);
END;
MEMBER PROCEDURE display_records
IS
BEGIN
Dbms_output.put_line('Employee Name:'||emp_name);
Dbms_output.put_line('Employee Number:'||emp_no);
Dbms_output.put_line('Salary:'||salary);
Dbms_output.put_line('Manager:'||manager);
END;
END;
/

Code Penjelasan

  • Code baris 1-9: Membuat tipe objek 'emp_object' dengan 4 atribut dan 3 anggota. Objek ini berisi definisi konstruktor dengan hanya 3 parameter. (Konstruktor implisit sebenarnya berisi jumlah parameter yang sama dengan jumlah atribut yang ada dalam tipe objek.)
  • Code baris 10: Membuat isi teks.
  • Code baris 11-21: Mendefinisikan konstruktor eksplisit. Menetapkan nilai parameter ke atribut dan menetapkan atribut 'manager' dengan nilai default '1001'.
  • Code baris 22-26: Mendefinisikan anggota 'insert_records', di mana nilai atribut dimasukkan ke dalam tabel 'emp'.
  • Code baris 27-34: Mendefinisikan anggota 'display_records', yang menampilkan nilai-nilai atribut tipe objek.

Keluaran:

Ketik dibuat

Tipe badan dibuat

Langkah 2) Membuat blok anonim untuk memanggil tipe objek yang telah dibuat melalui konstruktor implisit untuk emp_no 1005.

Tangkapan layar di bawah ini menunjukkan blok anonim yang memanggil emp_object melalui konstruktor implisit.

Blok anonim memanggil emp_object melalui konstruktor implisit untuk emp_no 1005

DECLARE
guru_emp_det emp_object;
BEGIN
guru_emp_det:=emp_object(1005,'RRR',20000,1000);
guru_emp_det.display_records;
guru_emp_det.insert_records;
COMMIT;
END;

Code Penjelasan

  • Code baris 37-45: Memasukkan data menggunakan konstruktor implisit. Panggilan ke konstruktor berisi jumlah nilai atribut yang sebenarnya.
  • Code baris 38: Mendeklarasikan 'guru_emp_det' sebagai tipe objek 'emp_object'.
  • Code baris 41: Pernyataan 'guru_emp_det.display_records' memanggil anggota 'display_records' dan nilai atribut akan ditampilkan.
  • Code baris 42: Pernyataan 'guru_emp_det.insert_records' memanggil anggota 'insert_records' dan nilai atribut dimasukkan ke dalam tabel. Blok tersebut kemudian melakukan commit. ..

Keluaran:

Nama Karyawan : RRR

Nomor Karyawan: 1005

Gaji: 20000

Manajer : 1000

Langkah 3) Membuat blok anonim untuk memanggil tipe objek yang telah dibuat melalui konstruktor eksplisit untuk emp_no 1006.

Tangkapan layar di bawah ini menunjukkan blok anonim yang memanggil emp_object melalui konstruktor eksplisit dengan tiga argumen.

Blok anonim memanggil emp_object melalui konstruktor eksplisit untuk emp_no 1006

DECLARE
guru_emp_det emp_object;
BEGIN
guru_emp_det:=emp_object(1006,'PPP',20000);
guru_emp_det.display_records;
guru_emp_det.insert_records;
COMMIT;
END;
/

Keluaran

Employee Name:PPP 
Employee Number:1006 
Salary:20000 
Manager:1001

Code Penjelasan:

  • Code baris 46-53: Memasukkan data menggunakan konstruktor eksplisit.
  • Code baris 46: Mendeklarasikan 'guru_emp_det' sebagai tipe objek 'emp_object'.
  • Code baris 50: Pernyataan 'guru_emp_det.display_records' memanggil anggota 'display_records' dan nilai atribut akan ditampilkan.
  • Code baris 51: Pernyataan 'guru_emp_det.insert_records' memanggil anggota 'insert_records' dan nilai atribut dimasukkan ke dalam tabel. Karena hanya tiga argumen yang dilewatkan, konstruktor eksplisit mengatur id manajer ke nilai defaultnya yaitu 1001.

Warisan dalam Tipe Objek

Properti pewarisan memungkinkan tipe objek turunan untuk mengakses semua atribut dan anggota dari tipe objek induk, atau tipe objek utama.

Tipe objek turunan disebut tipe objek yang diwariskan, dan tipe objek induk disebut tipe objek induk. Sintaks di bawah ini menunjukkan cara membuat tipe objek induk dan turunan. Tangkapan layar di bawah ini menunjukkan sintaks tipe induk (SUPER) yang ditandai sebagai NOT FINAL.

Sintaks CREATE TYPE untuk tipe objek induk NOT FINAL yang digunakan dalam pewarisan.

CREATE TYPE <object_type_name_parent> AS OBJECT
(
<attribute_l><datatype>,
.
.
)NOT FINAL;
/

Penjelasan Sintaks:

  • Sintaks di atas menunjukkan pembuatan tipe SUPER. Klausa NOT FINAL memungkinkan tipe tersebut untuk diwariskan.

Tangkapan layar di bawah ini menunjukkan sintaks tipe yang diwariskan (SUB) yang dibuat dengan kata kunci UNDER.

Sintaks CREATE TYPE UNDER untuk tipe sub-objek yang mewarisi dari induk.

CREATE TYPE<object_type_name_sub>UNDER<object_type_name_parent>
(
<attribute_l><datatype>,
.
);
/

Penjelasan Sintaks:

  • Sintaks di atas menunjukkan pembuatan tipe SUB. Tipe ini berisi semua anggota dan atribut dari tipe objek induk.

Contoh 1: Pada contoh di bawah ini, kita menggunakan properti pewarisan untuk memasukkan catatan dengan ID manajer '1002' untuk catatan ('RRR', 1007, 20000). Kita menjalankan program pada langkah-langkah berikut.

  • Langkah 1: Buat tipe SUPER.
  • Langkah 2: Buat tipe SUB dan isi.
  • Langkah 3: Buat blok anonim untuk memanggil tipe SUB.

Langkah 1) Buat tipe SUPER atau tipe Induk.

Screenshot di bawah ini menunjukkan supertipe emp_object yang dibuat dengan klausa NOT FINAL.

Membuat tipe super emp_object NOT FINAL untuk contoh pewarisan.

CREATE TYPE emp_object AS OBJECT(
emp_no NUMBER,
emp_name VARCHAR2(50),
salary NUMBER,
manager NUMBER,
CONSTRUCTOR FUNCTION emp_object(p_emp_no NUMBER,p_emp_name VARCHAR2(50),
p_salary NUMBER)RETURN SELF AS RESULT),
MEMBER PROCEDURE insert_records,
MEMBER PROCEDURE display_records)NOT FINAL;
/

Code Penjelasan:

  • Code baris 1-9: Membuat tipe objek 'emp_object' dengan 4 atribut dan 3 anggota. Objek ini berisi definisi konstruktor dengan hanya 3 parameter. Objek ini telah dideklarasikan sebagai 'NOT FINAL', sehingga merupakan tipe induk.

Langkah 2) Buat tipe SUB di bawah tipe SUPER.

Tangkapan layar di bawah ini menunjukkan tipe turunan sub_emp_object dan isi (body) yang sedang dibuat.

Membuat tipe turunan sub_emp_object dan isi (body)nya dengan insert_default_mgr.

CREATE OR REPLACE TYPE sub_emp_object 
UNDER emp_object
(default_manager NUMBER,MEMBER PROCEDURE insert_default_mgr);
/


CREATE OR REPLACE TYPE BODY sub_emp_object 
AS
MEMBER PROCEDURE insert_default_mgr 
IS
BEGIN
INSERT INTO emp
VALUES(emp_no,emp_name,salary,manager);
END;
END;
/

Code Penjelasan:

  • Code baris 10-13: Membuat 'sub_emp_object' sebagai tipe yang diwariskan dengan satu atribut tambahan 'default_manager' dan deklarasi prosedur anggota.
  • Code baris 14: Membuat isi untuk tipe objek yang diwariskan.
  • Code baris 16-21: Mendefinisikan prosedur anggota yang memasukkan catatan ke dalam tabel 'emp' dengan nilai-nilai dari tipe objek SUPER, kecuali untuk nilai manajer. Untuk nilai manajer, digunakan 'default_manager' dari tipe SUB.

Langkah 3) Membuat blok anonim untuk memanggil tipe SUB.

Tangkapan layar di bawah ini menunjukkan blok anonim yang memanggil tipe SUB dan menyisipkan ID manajer default.

Blok anonim yang memanggil tipe sub_emp_object untuk menyisipkan id manajer default.

DECLARE
guru_emp_det sub_emp_object;
BEGIN
guru_emp_det:= sub_emp_object(1007,'RRR',20000,1000,1002);
guru_emp_det.insert_default_mgr;
COMMIT;
END;
/

Code Penjelasan:

  • Code baris 25: Mendeklarasikan 'guru_emp_det' sebagai tipe 'sub_emp_object'.
  • Code baris 27: Menginisialisasi objek dengan konstruktor implisit. Konstruktor memiliki 5 parameter (4 atribut dari tipe PARENT dan 1 atribut dari tipe SUB). Parameter terakhir (1002) mendefinisikan nilai untuk atribut default_manager.
  • Code baris 28: Memanggil anggota 'insert_default_mgr' untuk memasukkan data dengan ID manajer default yang diteruskan dalam konstruktor.

Kesetaraan Objek PL/SQL

Instance objek yang termasuk dalam tipe objek yang sama dapat dibandingkan kesamaannya. Untuk melakukan ini, tipe objek tersebut memerlukan metode khusus yang disebut metode ORDER.

Metode ORDER ini harus berupa fungsi yang mengembalikan tipe numerik. Metode ini menerima dua parameter sebagai input (parameter pertama: id dari instance objek itu sendiri; parameter kedua: id dari instance objek lain).

ID dari kedua instance objek dibandingkan, dan hasilnya dikembalikan sebagai angka.

  • Nilai positif menunjukkan bahwa instance objek SELF lebih besar daripada instance lainnya.
  • Nilai negatif menunjukkan bahwa instance objek SELF lebih kecil daripada instance lainnya.
  • Angka nol menunjukkan bahwa instance objek SELF sama dengan instance lainnya.
  • Jika salah satu instance bernilai null, fungsi akan mengembalikan null.

Screenshot di bawah ini menunjukkan sintaks fungsi anggota ORDER yang harus disertakan dalam badan tipe untuk pemeriksaan kesamaan.

Sintaks fungsi anggota ORDER digunakan untuk membandingkan instance objek untuk kesamaan.

CREATE TYPE BODY<object_type_name_ 1>AS OBJECT
(
  ORDER MEMBER FUNCTION match(<parameter> object_type_name_ 1)
  RETURN INTEGER IS
  BEGIN
    IF <attribute_name>parameter <attribute_name>THEN
      RETURN -1; --any negative number will do
    ELSIF id>c.id THEN
      RETURN 1; --any positive number will do
    ELSE
      RETURN 0;
    END IF;
  END;
  .
  .
);
/

Penjelasan Sintaks:

  • Sintaks di atas menunjukkan fungsi ORDER yang harus disertakan dalam badan tipe untuk pemeriksaan kesamaan.
  • Parameter untuk fungsi ini harus berupa turunan dari tipe objek yang sama.
  • Fungsi tersebut dapat dipanggil sebagai โ€œobj_instance_1.match(obj_instance_2)โ€, dan ekspresi ini mengembalikan nilai numerik yang ditunjukkan, di mana obj_instance_1 dan obj_instance_2 adalah instance dari tipe objek tersebut.

Contoh 1: Pada contoh berikut, kita membandingkan dua objek. Kita membuat dua instance dan membandingkan atribut 'gaji' di antara keduanya. Kita melakukan ini dalam dua langkah.

  • Langkah 1: Buat tipe objek dan isi objek.
  • Langkah 2: Buat blok anonim untuk membandingkan instance objek.

Langkah 1) Membuat tipe dan isi objek.

Tangkapan layar di bawah ini menunjukkan spesifikasi emp_object_equality dan isinya, yang mendefinisikan fungsi ORDER yang membandingkan atribut gaji.

Membuat spesifikasi tipe objek emp_object_equality dengan fungsi ORDER. Mendefinisikan isi tipe emp_object_equality yang membandingkan atribut gaji.

CREATE TYPE emp_object_equality AS OBJECT(
salary NUMBER,
ORDER MEMBER FUNCTION equals(c emp_object_equality)RETURN INTEGER);
/
CREATE TYPE BODY emp_object_equality AS
ORDER MEMBER FUNCTION equals(c emp_object_equality)RETURN INTEGER 
IS
BEGIN
IF salary<c.salary
THEN RETURN -1;
ELSIF salary>c.salary
THEN RETURN 1;
ELSE
RETURN 0;
END IF;
END;
END;
/

Code Penjelasan:

  • Code baris 1-4: Membuat tipe objek 'emp_object_equality' dengan 1 atribut dan 1 anggota.
  • Code baris 6-16: Mendefinisikan fungsi ORDER yang membandingkan atribut 'salary' dari instance SELF dan instance parameter. Fungsi ini mengembalikan nilai negatif jika gaji SELF lebih rendah, nilai positif jika gaji SELF lebih tinggi, dan 0 jika gaji sama.

Code Keluaran:

Ketik dibuat

Langkah 2) Membuat blok anonim untuk membandingkan instance objek.

Tangkapan layar di bawah ini menunjukkan blok anonim yang membandingkan dua instance emp_object_equality berdasarkan gaji.

Blok anonim yang membandingkan dua instance emp_object_equality berdasarkan gaji.

DECLARE
l_obj_1 emp_object_equality;
l_obj_2 emp_object_equality;
BEGIN
l_obj_1:=emp_object_equality(15000); 
l_obj_2:=emp_object_equality(17000);
IF l_obj_1.equals(l_obj_2)>0
THEN
Dbms_output.put_line('Salary of first instance is greater');
ELSIF l_obj_1.equals(l_obj_2)<0
THEN
Dbms_output.put_line('Salary of second instance is greater'); 
ELSE
Dbms_output.put_line('Salaries are equal');
END IF;
END;
/

Keluaran

Salary of second instance is greater

Code Penjelasan:

  • Code baris 20: Mendeklarasikan 'l_obj_1' dengan tipe 'emp_object_equality'.
  • Code baris 21: Mendeklarasikan 'l_obj_2' dengan tipe 'emp_object_equality'.
  • Code baris 23: Menginisialisasi 'l_obj_1' dengan nilai gaji '15000'.
  • Code baris 24: Menginisialisasi 'l_obj_2' dengan nilai gaji '17000'.
  • Code baris 25-33: Mencetak pesan berdasarkan angka yang dikembalikan oleh fungsi ORDER.

Pertanyaan Umum Demo Slot

Suatu tipe objek memodelkan satu entitas dunia nyata dengan atribut dan metode. koleksi โ€” sebuah VARRAY, tabel bersarang, atau array asosiatif โ€” menyimpan banyak elemen dari satu tipe data. Tipe objek menjelaskan struktur dan perilaku, sedangkan koleksi menyimpan banyak nilai.

Keduanya membandingkan instance objek. Metode MAP mengembalikan nilai skalar tunggal yang Oracle Metode `order` digunakan untuk mengurutkan atau membandingkan objek, sedangkan metode `ORDER` membandingkan dua instance secara langsung dan mengembalikan angka negatif, nol, atau positif. Suatu tipe dapat mendefinisikan salah satu atau yang lainnya, bukan keduanya.

Ya. Anda dapat membuat tabel objek di mana setiap baris adalah instance objek, atau menggunakan tipe objek sebagai tipe data kolom tabel. Ini memungkinkan Oracle Menyimpan objek terstruktur secara langsung di dalam basis data, bukan hanya di memori.

Tipe NOT INSTANTIABLE tidak dapat membuat objek secara langsung; tipe ini bertindak sebagai objek absolut.tract merupakan basis yang diperluas oleh tipe lain. Dikombinasikan dengan NOT FINAL, ini mendefinisikan supertipe yang subtipe-nya menyediakan implementasi konkret dari metode yang dideklarasikan.

Gunakan ALTER TYPE untuk menambah atau menghapus atribut dan metode, tambahkan CASCADE untuk memperbarui objek yang bergantung, dan gunakan DROP TYPE untuk menghapus tipe tersebut. Tipe yang masih digunakan oleh tabel atau tipe lain tidak dapat dihapus sampai objek yang bergantung tersebut ditangani terlebih dahulu.

Lakukan kueri pada tampilan kamus data USER_TYPES dan ALL_TYPES untuk nama tipe, dan USER_TYPE_ATTRS dan USER_TYPE_METHODS untuk atribut dan metodenya. Tampilan ini memungkinkan Anda untuk mengaudit model objek yang ada tanpa membaca kode sumber.

Ya. Kopilot GitHub membuat draf spesifikasi CREATE TYPE, metode TYPE BODY, konstruktor, dan fungsi ORDER dari sebuah komentar. RevPeriksa tipe data atribut, parameter konstruktor, dan klausa pewarisan sebelum menerapkan tipe yang dihasilkan.

Asisten AI menganalisis tabel Anda dan menyarankan tipe objek serta peta atribut.pings, dan hierarki pewarisan. Tinjauan pembelajaran mesin ini menandai atribut yang berlebihan, konstruktor yang hilang, dan pewarisan yang terlalu dalam sebelum model objek mencapai tahap produksi, sehingga meningkatkan pemeliharaan.

Ringkaslah postingan ini dengan: