Oracle PL/SQL Nesne Tipleri: Örneklerle CREATE TYPE

⚡ Akıllı Özet

PL/SQL'deki nesne türleri, nesne yönelimli programlamayı kullanıma sunar. OracleBu sayede, öznitelikler ve yöntemlerle gerçek dünya varlıklarını modelleyebilirsiniz. Yapıcıları, kalıtımı ve eşitlik karşılaştırmasını destekleyerek, tek bir şema düzeyindeki türün yapılandırılmış verileri depolayıp işlemesini sağlarlar.

  • 🧱 Nesne Türü Bileşenleri: Bir nesne türü, veri depolayan öznitelikleri ve işlem mantığını tanımlayan üyeleri veya yöntemleri bir araya getirir.
  • 🏗️ Nesne Oluştur: Nesne türleri şema düzeyinde CREATE TYPE komutuyla oluşturulur ve yöntemleri ayrı bir CREATE TYPE BODY komutunda tanımlanır.
  • 🔧 Yapıcılar: Her nesne türünün, türün adıyla adlandırılmış örtük bir kurucusu vardır ve varsayılan değerleri ayarlamak için açık bir kurucu tanımlayabilirsiniz.
  • 🧬 Kalıtım: "NOT FINAL" üst türü "UNDER" ile genişletilir, böylece alt tür tüm üst tür özelliklerini ve üyelerini miras alır.
  • 🇧🇷 eşitlik: ORDER üye fonksiyonu, iki nesne örneğini karşılaştırır ve negatif, sıfır veya pozitif bir sayı döndürür.
  • 🤖 Yapay Zeka Yardımı: GitHub Copilot gibi yapay zeka asistanları, bir yorumdan CREATE TYPE tanımları, yapıcılar ve ORDER yöntemleri taslağı oluşturur.

Oracle PL/SQL nesne türlerini, öznitelikleri ve metotlarıyla birlikte CREATE TYPE komutunu göstererek açıklıyoruz.

PL/SQL'de Nesne Türü Nedir?

Nesne yönelimli programlama, özellikle yeniden kullanılabilir bileşenler ve karmaşık uygulamalar oluşturmak için uygundur. Programlar "eylemler" yerine "nesneler" etrafında düzenlenir; yani, tek bir eylem yerine bütün bir nesneyle çalışmak ve etkileşimde bulunmak üzere tasarlanırlar. Bu yaklaşım, programcının nesne-varlık düzeyinde ayrıntıları doldurmasına ve manipüle etmesine olanak tanır.

Aşağıdaki resim, bir banka hesabının nesne varlığı olarak ele alındığı bir nesne türü örneğini göstermektedir. Nesne nitelikleri değerler içerir (bir banka hesabı için bunlar hesap numarası, banka bakiyesi vb.) ve nesne yöntemleri ise faiz oranını hesaplama veya banka ekstresi oluşturma gibi eylemleri tanımlar; bunların her biri tamamlanması gereken bir işlem gerektirir.

PL/SQL'de öznitelikleri ve metotları olan bir nesne türü olarak modellenen banka hesabı

In PL / SQLNesne yönelimli programlama, nesne türlerine dayanır. Bir nesne türü, gerçek dünyadaki herhangi bir varlığı temsil edebilir. Aşağıdaki bölümlerde nesne türleri, bileşenleri ve bunların nasıl oluşturulup kullanılacağı incelenmektedir.

Nesne Türlerinin Bileşenleri

Bir PL/SQL nesne türü esas olarak iki bileşenden oluşur.

  1. Özellikler
  2. Üyeler/Yöntemler

Özellikler

Nitelikler, verilerin depolandığı sütunlar veya alanlardır. Her nitelik, o nitelik için işleme ve depolama türünü tanımlayan veri türüne eşlenir. Bir nitelik, geçerli herhangi bir veri türünde olabilir. PL/SQL veri türüveya başka bir nesne türünde olabilir.

Üyeler/Yöntemler

Üyeler veya yöntemler şunlardır: alt programlar Nesne türü içinde tanımlanırlar. Veri depolamak için kullanılmazlar; bunun yerine, nesne türü içinde gerçekleştirilen işlemleri tanımlarlar - örneğin, nesneyi doldurmadan önce verileri doğrulamak gibi. Nesne türü belirtiminde bildirilirler ve nesne türü gövdesinde tanımlanırlar. Gövde isteğe bağlıdır: eğer hiçbir üye yoksa, bir nesne türünün gövde kısmı yoktur.

İçinde Nesne Oluştur Oracle

Nesne türü alt program düzeyinde oluşturulamaz; yalnızca şema düzeyinde oluşturulabilir. Nesne türü şemada tanımlandıktan sonra alt programlarda kullanılabilir. Nesne türü “CREATE TYPE” ifadesi kullanılarak oluşturulur ve tür gövdesi ancak nesne türü var olduktan sonra oluşturulabilir.

Aşağıdaki ekran görüntüleri, nesne belirtimi için CREATE TYPE sözdizimini ve yöntemlerini tanımlayan CREATE TYPE BODY sözdizimini göstermektedir.

CREATE TYPE sözdizimi, nitelikleri olan bir nesne belirtimini tanımlar. Oracle PL/SQL nesne türünün metotlarını tanımlayan `CREATE TYPE BODY` sözdizimi.

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;
.
.
);
/

Sözdizimi Açıklaması:

  • Yukarıdaki sözdizimi, özniteliklere sahip bir NESNE ve yöntemlere sahip bir NESNE GÖVDESİ'nin oluşturulmasını göstermektedir.
  • Yöntemler nesne gövdesinde de aşırı yüklenebilir.

Nesne Tipinin Bildirgenin Başlatılması

PL/SQL'deki diğer bileşenler gibi, nesne türleri de bir programda kullanılmadan önce tanımlanmalıdır. Nesne türü oluşturulduktan sonra, bir alt programın bildirim bölümünde o nesne türünde bir değişken tanımlamak için kullanılabilir.

Bir değişken nesne türü olarak tanımlandığında, çalışma zamanında nesne türünün yeni bir örneği oluşturulur ve bu yeni oluşturulan örnek değişken adıyla referans alınır. Bu şekilde, tek bir nesne türü farklı örnekler altında birden fazla değer saklayabilir.

Aşağıdaki ekran görüntüsü, bir değişkenin bir nesne türü olarak nasıl tanımlandığını göstermektedir. PL/SQL bloğu.

PL/SQL kod bloğunda bildirimsel bölümde nesne türünde bir değişkenin tanımlanması

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

Sözdizimi Açıklaması:

  • Yukarıdaki sözdizimi, bir bildirimin nasıl yapıldığını göstermektedir. değişken Bildirimsel bölümde bir nesne türü olarak.

Bir alt programda bir değişken nesne türü olarak tanımlandıktan sonra, atomik olarak null olur; nesnenin tamamı null olur. Programda kullanılabilmesi için önce değerlerle başlatılması gerekir. Nesneler kurucu fonksiyonlar kullanılarak başlatılır.

Yapıcılar, nesne türüyle aynı adla erişilebilen, nesnenin örtük yöntemleridir. Aşağıdaki ekran görüntüsü, bir nesne türü örneğinin başlatılmasını göstermektedir.

Bir nesne türü örneğini kurucu metodu kullanarak null değerine başlatma

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

Sözdizimi Açıklaması:

  • Yukarıdaki sözdizimi, nesne türü örneğinin null değeriyle başlatılmasını göstermektedir.
  • Nesne başlatıldıktan sonra kendisi artık boş (null) değildir, ancak nesnenin içindeki öznitelikler, onlara değer atanana kadar boş (null) kalır.

Kurucular

Yapıcılar, nesne türüyle aynı adla çağrılabilecek, nesnenin örtük metotlarıdır. Nesneye ilk kez başvurulduğunda, bu yapıcı örtük olarak çağrılır.

Bu yapıcı fonksiyonları kullanarak nesneleri başlatabilirsiniz. Bir yapıcı fonksiyon, nesne türü gövdesinde nesne türüyle aynı ada sahip bir üye tanımlanarak açıkça tanımlanabilir.

Örnek 1: Aşağıdaki örnekte, emp tablosuna ('RRR', 1005, 20000, 1000) ve ('PPP', 1006, 20000, 1001) değerleriyle kayıt eklemek için nesne türü üyesini kullanıyoruz. Veriler eklendikten sonra, nesne türü üyesini kullanarak bunları görüntülüyoruz. Ayrıca, ikinci kayıt için yönetici kimliğini varsayılan değer olan 1001 ile doldurmak için açık bir kurucu kullanıyoruz.

Bunu aşağıdaki adımlarla gerçekleştiriyoruz.

  • Adım 1: Nesne türünü ve Nesne türü gövdesini oluşturun.
  • Adım 2: emp_no 1005 için örtük kurucu aracılığıyla nesne türünü çağırmak üzere anonim bir blok oluşturun.
  • Adım 3: emp_no 1006 için açık kurucu aracılığıyla nesne türünü çağırmak üzere anonim bir blok oluşturun.

Adım 1) Nesne türünü ve nesne türü gövdesini oluşturun.

Aşağıdaki ekran görüntüsü, emp_object nesne türü belirtiminin öznitelikleri ve üyeleriyle birlikte nasıl oluşturulduğunu göstermektedir.

Nitelikleri ve üyeleriyle emp_object nesne türü belirtimini oluşturma

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);
/

Aşağıdaki ekran görüntüsü, açık kurucu ve üye prosedürleri kullanılarak oluşturulan emp_object tip gövdesini göstermektedir.

emp_object tip gövdesini açık bir kurucu ve üye prosedürleriyle tanımlama

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 açıklama

  • Code 1-9. satırlar: 4 özniteliğe ve 3 üyeye sahip 'emp_object' nesne türü oluşturuluyor. Bu nesne türü, yalnızca 3 parametre içeren bir kurucu fonksiyonun tanımını içeriyor. (Gerçek örtük kurucu fonksiyon, nesne türünde bulunan öznitelik sayısına eşit sayıda parametre içeriyor.)
  • Code 10 hattı: Yazı gövdesini oluşturma.
  • Code 11-21. satırlar: Açık kurucu fonksiyonun tanımlanması. Parametre değerlerinin özniteliklere atanması ve 'manager' özniteliğine varsayılan değer olan '1001'in atanması.
  • Code 22-26. satırlar: 'insert_records' üyesini tanımlayarak, öznitelik değerlerinin 'emp' tablosuna eklenmesini sağlıyoruz.
  • Code 27-34. satırlar: Nesne türü özniteliklerinin değerlerini görüntüleyen 'display_records' üyesini tanımlıyoruz.

Çıktı:

Tür oluşturuldu

Tür gövdesi oluşturuldu

) 2 Adım 1005 numaralı çalışan için oluşturulan nesne türünü örtük kurucu aracılığıyla çağırmak üzere anonim bir blok oluşturuluyor.

Aşağıdaki ekran görüntüsü, örtük kurucu aracılığıyla emp_object'i çağıran anonim bloğu göstermektedir.

Anonim blok, emp_no 1005 için örtük kurucu aracılığıyla emp_object'i çağırıyor.

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 açıklama

  • Code 37-45. satırlar: Kayıtlar, örtük kurucu kullanılarak ekleniyor. Kurucuya yapılan çağrı, öznitelik değerlerinin gerçek sayısını içerir.
  • Code 38 hattı: 'guru_emp_det' değişkenini 'emp_object' nesne türünde tanımlar.
  • Code 41 hattı: 'guru_emp_det.display_records' ifadesi 'display_records' üyesini çağırır ve öznitelik değerleri görüntülenir.
  • Code 42 hattı: 'guru_emp_det.insert_records' ifadesi 'insert_records' üyesini çağırır ve öznitelik değerleri tabloya eklenir. Ardından blok işlemi onaylar. işlem.

Çıktı:

Çalışan Adı: RRR

Çalışan Sayısı: 1005

Maaş: 20000

Yönetici : 1000

) 3 Adım 1006 numaralı çalışan için oluşturulan nesne türünü açık kurucu aracılığıyla çağırmak üzere anonim bir blok oluşturuluyor.

Aşağıdaki ekran görüntüsü, üç argümanla açık kurucu aracılığıyla emp_object'i çağıran anonim bloğu göstermektedir.

1006 numaralı emp_no için açık kurucu aracılığıyla emp_object'i çağıran anonim blok.

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;
/

Çıktı

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

Code Açıklama:

  • Code 46-53. satırlar: Açık yapıcıyı kullanarak kaydı ekleme.
  • Code 46 hattı: 'guru_emp_det' değişkenini 'emp_object' nesne türünde tanımlar.
  • Code 50 hattı: 'guru_emp_det.display_records' ifadesi 'display_records' üyesini çağırır ve öznitelik değerleri görüntülenir.
  • Code 51 hattı: 'guru_emp_det.insert_records' ifadesi 'insert_records' üyesini çağırır ve öznitelik değerleri tabloya eklenir. Yalnızca üç argüman geçirildiği için, açık kurucu, yönetici kimliğini varsayılan değeri olan 1001'e ayarlar.

Nesne Türünde Kalıtım

Kalıtım özelliği, alt nesne türünün üst nesne türünün veya ebeveyn nesne türünün tüm özniteliklerine ve üyelerine erişmesine olanak tanır.

Alt nesne türüne kalıtım yoluyla alınan nesne türü, üst nesne türüne ise ebeveyn nesne türü denir. Aşağıdaki sözdizimi, ebeveyn ve kalıtım yoluyla alınan nesne türlerinin nasıl oluşturulacağını göstermektedir. Aşağıdaki ekran görüntüsünde, ebeveyn (SUPER) türünün sözdizimi NOT FINAL olarak işaretlenmiştir.

Kalıtımda kullanılan NOT FINAL üst nesne türü için CREATE TYPE sözdizimi.

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

Sözdizimi Açıklaması:

  • Yukarıdaki sözdizimi, SUPER türünün oluşturulmasını göstermektedir. NOT FINAL yan tümcesi, türün miras alınmasına olanak tanır.

Aşağıdaki ekran görüntüsü, UNDER anahtar kelimesiyle oluşturulan kalıtımlı (SUB) tür sözdizimini göstermektedir.

Üst nesneden miras alan bir alt nesne türü için CREATE TYPE UNDER sözdizimi.

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

Sözdizimi Açıklaması:

  • Yukarıdaki sözdizimi, SUB türünün oluşturulmasını göstermektedir. Bu tür, üst nesne türündeki tüm üyeleri ve öznitelikleri içerir.

Örnek 1: Aşağıdaki örnekte, ('RRR', 1007, 20000) kaydı için '1002' yönetici kimliğine sahip bir kayıt eklemek üzere kalıtım özelliğini kullanıyoruz. Programı aşağıdaki adımlarla çalıştırıyoruz.

  • Adım 1: SUPER türünü oluşturun.
  • Adım 2: SUB türünü ve gövdesini oluşturun.
  • 3. Adım: SUB türünü çağırmak için anonim bir blok oluşturun.

Adım 1) Üst tür veya Ebeveyn türü oluşturun.

Aşağıdaki ekran görüntüsü, NOT FINAL koşuluyla oluşturulan emp_object üst türünü göstermektedir.

Kalıtım örneği için `emp_object NOT FINAL` üst türünü oluşturma

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 Açıklama:

  • Code 1-9. satırlar: 4 özniteliğe ve 3 üyeye sahip 'emp_object' nesne türü oluşturuluyor. Sadece 3 parametre alan bir kurucu fonksiyonun tanımını içeriyor. 'NOT FINAL' olarak tanımlandığı için üst türdür.

Adım 2) SUPER türünün altına SUB türünü oluşturun.

Aşağıdaki ekran görüntüsü, sub_emp_object kalıtım türünün ve gövdesinin oluşturulma sürecini göstermektedir.

insert_default_mgr ile sub_emp_object adlı kalıtımlı türü ve gövdesini oluşturma

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 Açıklama:

  • Code 10-13. satırlar: 'sub_emp_object' adlı kalıtım türünü, 'default_manager' adlı ek bir öznitelik ve bir üye prosedür bildirimiyle oluşturuyoruz.
  • Code 14 hattı: Kalıtım yoluyla alınan nesne türü için gövde oluşturuluyor.
  • Code 16-21. satırlar: SUPER nesne türündeki değerleri kullanarak 'emp' tablosuna kayıt ekleyen üye prosedürünü tanımlıyoruz; ancak yönetici değeri hariç. Yönetici değeri için SUB türündeki 'default_manager' değerini kullanıyoruz.

3. Adım) SUB türünü çağırmak için anonim blok oluşturma.

Aşağıdaki ekran görüntüsü, SUB türünü çağıran ve varsayılan yönetici kimliğini ekleyen anonim bloğu göstermektedir.

Anonim blok, varsayılan bir yönetici kimliği eklemek için sub_emp_object türünü çağırıyor.

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 Açıklama:

  • Code 25 hattı: 'guru_emp_det' nesnesini 'sub_emp_object' türünde tanımlıyoruz.
  • Code 27 hattı: Nesneyi örtük kurucu ile başlatıyoruz. Kurucu 5 parametreye sahiptir (PARENT türünden 4 öznitelik ve SUB türünden 1 öznitelik). Son parametre (1002), default_manager özniteliği için değeri tanımlar.
  • Code 28 hattı: Yapıcı fonksiyonda belirtilen varsayılan yönetici kimliğiyle kaydı eklemek için 'insert_default_mgr' üyesini çağırıyoruz.

PL/SQL Nesnelerinin Eşitliği

Aynı nesne türüne ait nesne örnekleri eşitlik açısından karşılaştırılabilir. Bunu yapmak için, nesne türünün ORDER yöntemi adı verilen özel bir yönteme ihtiyacı vardır.

Bu ORDER metodu, sayısal bir değer döndüren bir fonksiyon olmalıdır. Giriş olarak iki parametre alır (birinci parametre: kendi nesne örneğinin kimliği; ikinci parametre: başka bir nesne örneğinin kimliği).

İki nesne örneğinin kimlikleri karşılaştırılır ve sonuç sayısal olarak döndürülür.

  • Pozitif bir değer, SELF nesne örneğinin diğer örneğe göre daha büyük olduğunu gösterir.
  • Negatif bir değer, SELF nesne örneğinin diğer örneğe göre daha küçük olduğunu gösterir.
  • Sıfır, SELF nesne örneğinin diğer örneğe eşit olduğunu gösterir.
  • Eğer örneklerden herhangi biri null ise, fonksiyon null değerini döndürür.

Aşağıdaki ekran görüntüsü, eşitlik kontrolü için tür gövdesine eklenmesi gereken ORDER üye fonksiyonunun sözdizimini göstermektedir.

ORDER üye fonksiyonu sözdizimi, nesne örneklerini eşitlik açısından karşılaştırmak için kullanılır.

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;
  .
  .
);
/

Sözdizimi Açıklaması:

  • Yukarıdaki sözdizimi, eşitlik kontrolü için tür gövdesine eklenmesi gereken ORDER fonksiyonunu göstermektedir.
  • Bu işlevin parametresi aynı nesne türünün bir örneği olmalıdır.
  • Bu fonksiyon “obj_instance_1.match(obj_instance_2)” şeklinde çağrılabilir ve bu ifade, gösterilen sayısal değeri döndürür; burada obj_instance_1 ve obj_instance_2, nesne türünün örnekleridir.

Örnek 1: Aşağıdaki örnekte, iki nesneyi karşılaştırıyoruz. İki örnek oluşturup, aralarındaki 'maaş' özelliğini karşılaştırıyoruz. Bunu iki adımda yapıyoruz.

  • Adım 1: Nesne türünü ve gövdesini oluşturun.
  • Adım 2: Nesne örneklerini karşılaştırmak için anonim bloğu oluşturun.

Adım 1) Nesne türünü ve gövdesini oluşturma.

Aşağıdaki ekran görüntüleri, maaş özelliğini karşılaştıran ORDER fonksiyonunu tanımlayan emp_object_equality spesifikasyonunu ve gövdesini göstermektedir.

ORDER fonksiyonu kullanarak emp_object_equality nesne türü belirtimini oluşturma Maaş özniteliğini karşılaştıran `emp_object_equality` türündeki gövdeyi tanımlama.

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 Açıklama:

  • Code 1-4. satırlar: 'emp_object_equality' nesne türünü 1 öznitelik ve 1 üye ile oluşturma.
  • Code 6-16. satırlar: SELF örneğinin ve parametre örneğinin 'maaş' özniteliğini karşılaştıran ORDER fonksiyonunu tanımlıyoruz. SELF'in maaşı daha düşükse negatif, daha yüksekse pozitif, eşitse 0 döndürür.

Code Çıktı:

Tür oluşturuldu

Adım 2) Nesne örneklerini karşılaştırmak için anonim bloğu oluşturma.

Aşağıdaki ekran görüntüsü, iki emp_object_equality örneğini maaşa göre karşılaştıran anonim bloğu göstermektedir.

İki emp_object_equality örneğini maaşa göre karşılaştıran anonim blok.

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;
/

Çıktı

Salary of second instance is greater

Code Açıklama:

  • Code 20 hattı: 'emp_object_equality' türünde 'l_obj_1' nesnesi tanımlanıyor.
  • Code 21 hattı: 'emp_object_equality' türünde 'l_obj_2' nesnesi tanımlanıyor.
  • Code 23 hattı: 'l_obj_1' değişkeni '15000' maaş değeriyle başlatılıyor.
  • Code 24 hattı: 'l_obj_2' değişkeni '17000' maaş değeriyle başlatılıyor.
  • Code 25-33. satırlar: ORDER fonksiyonunun döndürdüğü sayıya göre mesajı yazdırıyor.

SSS

Bir nesne türü, öznitelikleri ve yöntemleri olan tek bir gerçek dünya varlığını modeller. Toplamak — VARRAY, iç içe tablo veya ilişkisel dizi — tek bir veri türünden birçok öğeyi barındırır. Nesne türleri yapıyı ve davranışı tanımlarken, koleksiyonlar birden fazla değer depolar.

İkisi de nesne örneklerini karşılaştırır. Bir MAP yöntemi, tek bir skalar değer döndürür. Oracle Bir tür, nesneleri sıralamak veya karşılaştırmak için kullanılırken, bir ORDER metodu iki örneği doğrudan karşılaştırır ve negatif, sıfır veya pozitif bir sayı döndürür. Bir tür, yalnızca birini tanımlayabilir, ikisini birden tanımlayamaz.

Evet. Her satırın bir nesne örneği olduğu bir nesne tablosu oluşturabilir veya bir tablo sütununun veri türü olarak bir nesne türü kullanabilirsiniz. Bu, şunları sağlar: Oracle Yapılandırılmış nesneleri yalnızca bellekte değil, doğrudan veritabanında saklayın.

Örneklendirilemeyen bir tür doğrudan nesne oluşturamaz; bir mutlak nesne gibi davranır.tracDiğer türlerin genişlettiği bir temeldir. NOT FINAL ile birlikte kullanıldığında, alt türleri tanımlanmış yöntemlerinin somut uygulamasını sağlayan bir üst tür tanımlar.

ALTER TYPE komutuyla öznitelikleri ve yöntemleri ekleyebilir veya kaldırabilir, CASCADE ile bağımlı nesneleri güncelleyebilir ve DROP TYPE komutuyla türü kaldırabilirsiniz. Tablolar veya diğer türler tarafından hala kullanılan bir tür, bu bağımlı nesneler önce ele alınana kadar kaldırılamaz.

Veri sözlüğü görünümlerinden USER_TYPES ve ALL_TYPES'ı tür adları için, USER_TYPE_ATTRS ve USER_TYPE_METHODS'u ise nitelikleri ve yöntemleri için sorgulayın. Bu görünümler, kaynak kodunu okumadan mevcut bir nesne modelini denetlemenizi sağlar.

Evet. GitHub Yardımcı Pilotu Bir yorumdan CREATE TYPE belirtimleri, TYPE BODY yöntemleri, yapıcılar ve ORDER fonksiyonları taslakları oluşturur. RevOluşturulan türü dağıtmadan önce öznitelik veri tiplerini, kurucu parametrelerini ve kalıtım maddelerini inceleyin.

Yapay zekâ asistanları tablolarınızı analiz eder ve nesne türleri, özellik haritaları önerir.pingBu makine öğrenimi incelemesi, nesne modeli üretime geçmeden önce gereksiz öznitelikleri, eksik kurucuları ve aşırı derin kalıtımı işaretleyerek bakım kolaylığını artırır.

Bu yazıyı şu şekilde özetleyin: