Oracle Örneklerle PL/SQL Kayıt Türü

⚡ Akıllı Özet

PL/SQL Kayıt Türü, her biri kendi adına ve veri türüne sahip birden fazla sütunu tek bir yeni türde gruplandıran karmaşık bir veri türüdür. Bir kayıt, veritabanı düzeyinde depolanmış bir nesne olarak veya bir alt program içinde tanımlanabilir ve alanlarına nokta operatörü ile erişilir.

  • 🧱 Tanım: Bir kayıt türü, bir veya daha fazla sütunu tek bir yeni veri türü altında gruplandırır.
  • 🔑 Anahtar kelime: TYPE anahtar kelimesi, derleyiciye yeni bir veri türünün oluşturulduğunu bildirir.
  • 🏛️ İki Seviye: Veritabanı düzeyindeki kayıt, depolanmış bir nesnedir; alt program düzeyindeki kayıt ise yalnızca o alt programın içinde görülebilir.
  • 🔗 Saha Erişimi: Alanlara, nokta operatörü kullanılarak kayıt_değişkeni.sütun_adı şeklinde erişilir.
  • 📥 Sütun düzeyinde: Değerler aynı anda yalnızca bir alana atanabilir.
  • ???? Satır düzeyinde: SELECT INTO sorgusu, bir tablodaki bir satırdan tüm kaydı doldurabilir.
  • 🧩 Kayıt Türleri: Tablo tabanlı %ROWTYPE, imleç tabanlı %ROWTYPE ve programcı tanımlı kayıtlar.

Oracle PL/SQL Kayıt Türü

Kayıt türü nedir?

Kayıt türü, programcının istenen sütun yapısına sahip yeni bir veri türü oluşturmasına olanak tanıyan karmaşık bir veri türüdür. Başlıca özellikleri şunlardır:

  • Bir veya daha fazla sütunu gruplandırarak yeni bir veri türü oluşturur.
  • Bu sütunların her birinin kendine ait bir adı ve veri türü vardır.
  • Bir kayıt türü, verileri birçok sütundan oluşan tek bir kayıt olarak kabul edebilir veya bir kaydın belirli bir sütununa ait değeri kabul edebilir.
  • Kayıt türü, basitçe yeni bir veri türüdür. Oluşturulduktan sonra, yeni bir veri türü olarak saklanır ve programlarda bir değişken tanımlamak için kullanılabilir.
  • Anahtar kelimeyi kullanıyor. 'TİP' Derleyiciye yeni bir veri türünün oluşturulduğunu bildirmek için.
  • Bu, şu adreste oluşturulabilir: veritabanı seviyesiVeritabanı nesnesi olarak saklanan ve veritabanı genelinde veya veritabanı düzeyinde kullanılan veriler. alt program seviyesiSadece alt programın içinde görülebilir.
  • Tablo sütunları için de veritabanı düzeyinde kayıt türü tanımlanabilir, böylece tek bir sütun karmaşık verileri tutabilir.
  • Verilere, değişken adı, ardından nokta operatörü (.), ardından sütun adı belirtilerek erişilir, yani ' . '.

Kayıt Türünü Bildirme Sözdizimi

Veritabanı düzeyinde bildirimin sözdizimi:

Veritabanı düzeyinde kayıt türü bildirimi

CREATE TYPE <type_name_db> IS RECORD
(
<column 1> <datatype>,
);

İlk söz diziminde, 'CREATE TYPE' anahtar kelimesi derleyiciye, belirtilen sütunlarla "type_name_db" adlı kayıt türünü bir veritabanı nesnesi olarak oluşturmasını söyler. Bu, herhangi bir blok içinde değil, ayrı bir ifade olarak verilir.

Alt program düzeyinde bildirim için sözdizimi:

Alt program düzeyinde kayıt türü bildirimi

DECLARE
TYPE <type_name> IS RECORD
(
<column1> <datatype>,
);
BEGIN
<execution_section>;
END;

Bu sözdiziminde, "type_name" adlı kayıt türünü yalnızca alt program içinde oluşturuyoruz. Her iki yöntemde de sütun ve veri türünü tanımlama şekli benzerdir.

Örnek 1: Kayıt Türü Bir Veritabanı Nesnesi Olarak

Bu programda, bir kayıt türünü veritabanı nesnesi olarak nasıl oluşturacağımızı göreceğiz. Dört sütunlu 'emp_det' kayıt türünü oluşturuyoruz. Sütunlar ve veri türleri şunlardır:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • MÜDÜR (NUMARA)
  • MAAŞ (SAYI)
CREATE TYPE emp_det IS OBJECT
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER
);
/

Çıktı:

Type created

Code açıklama

  • Yukarıdaki kod, emp_det türünde bir veritabanı nesnesi oluşturur.
  • Tanımlandığı gibi, dört sütunu vardır: emp_no, emp_name, manager ve salary.
  • Şimdi 'emp_det' diğerlerinden herhangi birine benziyor. veri tipi (NUMBER veya VARCHAR2 gibi) ve tüm veritabanında görünürdür. Bu nedenle, veritabanının herhangi bir yerinde bu türde bir değişken tanımlamak için kullanılabilir.

Örnek 2: Alt Program Düzeyi, Sütun Düzeyi Erişimi

Bu örnekte, alt program düzeyinde bir kayıt türünün nasıl oluşturulacağını ve sütun bazında değerlerin nasıl doldurulup alınacağını görüyoruz. Alt program düzeyinde 'emp_det' kayıt türünü oluşturuyoruz ve bunu veri doldurmak ve görüntülemek için kullanıyoruz.

Kayıt türü sütun düzeyinde erişim örneği

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
guru99_emp_rec.emp_no:= 1001;
guru99_emp_rec.emp_name:= 'XXX';
guru99_emp_rec.manager:= 1000;
guru99_emp_rec.salary:= 10000;
dbms_output.put_line('Employee Detail');
dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);
dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);
dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);
dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);
END;
/

Çıktı:

Employee Detail
Employee Number: 1001
Employee Name: XXX
Employee Salary: 10000
Employee Manager Number: 1000

Code açıklama

  • Code 2-8. satırlar: 'emp_det' kayıt türü, NUMBER, VARCHAR2, NUMBER ve NUMBER veri türlerine sahip emp_no, emp_name, manager ve salary sütunlarıyla tanımlanmıştır.
  • Code 9 hattı: guru99_emp_rec değişkeni 'emp_det' veri tipinde tanımlanmıştır. Bu değişken Dört alanın tamamını içeren bir değer tutabilir.
  • Code 11 hattı: 'Guru99_emp_rec'in 'emp_no' alanını 1001 değeriyle doldurma.
  • Code 12 hattı: 'emp_name' alanını XXX değeriyle doldurma.
  • Code 13 hattı: 'Yönetici' alanına 1000 değeri atanıyor.
  • Code 14 hattı: 'Maaş' alanına 10000 değeri giriliyor.
  • Code 15-19. satırlar: Çıktıda 'guru99_emp_rec' değerini görüntüleme.

Örnek 3: Alt Program Düzeyi, Satır Düzeyi Erişimi

Bu örnekte, alt program düzeyinde bir kayıt türü oluşturmayı ve bunu satır düzeyinde doldurmayı görüyoruz. Alt program düzeyinde 'emp_det' kayıt türünü oluşturuyoruz ve bunu veri doldurmak ve görüntülemek için kullanıyoruz.

Kayıt türüne satır düzeyinde erişim örneği

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
INSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);
COMMIT;
SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;
dbms_output.put_line ('Employee Detail');
dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);
dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);
dbms_output.put_line ('Employee Salary: '||guru99_emp_rec.salary);
dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);
END;
/

Code açıklama

  • Code 2-8. satırlar: 'emp_det' kayıt türü, NUMBER, VARCHAR2, NUMBER ve NUMBER veri türlerine sahip emp_no, emp_name, manager ve salary sütunlarıyla tanımlanmıştır.
  • Code 9 hattı: guru99_emp_rec değişkeni 'emp_det' veri tipinde tanımlanmıştır ve dört alanın tamamını içerebilir.
  • Code 11 hattı: emp tablosuna 1002 (emp_no), YYY (emp_name), 15000 (salary) ve 1000 (manager number) değerlerini girerek verileri doldurun.
  • Code 12 hattı: Ekleme işlemi gerçekleştiriliyor.
  • Code 13 hattı: 'guru99_emp_rec' değişkeni, 1002 numaralı çalışan için yapılan select sorgusundan elde edilen verilerle satır düzeyinde dolduruluyor.
  • Code 15-19. satırlar: Çıktıda 'guru99_emp_rec' değerini görüntüleme.

Çıktı:

Employee Detail
Employee Number: 1002
Employee Name: YYY
Employee Salary: 1000
Employee Manager Number: 15000

Not: Bir kayıt türüne, değeri herhangi bir çıktı moduna yönlendirilirken yalnızca sütun düzeyinde erişilebilir. Bu örnekte, SELECT listesinin sırasının kayıt alanı sırasıyla eşleşmediğine dikkat edin; bu nedenle maaş ve yönetici değerleri çıktıda yer değiştirmiş olarak görünmektedir.

PL/SQL Kayıt Türleri

Yukarıda gösterilen programcı tarafından tanımlanan kaydın ötesinde, Oracle Otomatik olarak yapılarını kopyalayan iki adet sabit kayıt türü sunar. Bunları kullanmak, sütunların yeniden tanımlanmasını önler ve kaydın, dayandığı tablo veya imleçle uyumlu kalmasını sağlar.

Kayıt türü Bildirildi Yapı şuradan gelir:
Tablo tabanlı kayıt tablo_adı%SATIR_TİPİ Bir tablonun tüm sütunları
İmleç tabanlı kayıt imleç_adı%SATIRTİPİ İmlecin seçim listesi
Programcı tanımlı kayıt TİP … KAYITTIR Elle listelediğiniz sütunlar

Şeklin bir tabloyu veya bir yapıyı takip etmesi gerektiğinde, %ROWTYPE kaydı en güvenli seçimdir. imleçÇünkü sütun değişikliği bir sonraki derlemede otomatik olarak algılanır.

SSS

Bir kayıt, muhtemelen farklı türdeki farklı sütunları tek bir satır benzeri yapıda gruplandırır. Bir koleksiyon, alt simgeyle indekslenmiş aynı türden birçok öğeyi içerir. Bunlar genellikle bir araya getirilir ve kayıt koleksiyonu oluşturulur.

%ROWTYPE, alanları bir tablo veya imleçle otomatik olarak eşleşen bir kayıt tanımlar. Kaydın kaynakla aynı olması gerektiğinde kullanılır, böylece sütun değişikliği bildirimi düzenlemeye gerek kalmadan yansıtılır.

Evet, eğer her iki kayıt da aynı türdeyse. SELECT INTO ifadesi, seçim listesinin sırası kaydın alan sırasıyla eşleştiği sürece, bir tablo satırından tüm kaydı da doldurabilir.

Evet. Yapay zeka, tablo tanımını okuyabilir ve eşleşen bir TYPE … IS RECORD bloğu üretebilir veya tabloya canlı bağlantının tercih edildiği durumlarda %ROWTYPE önerebilir. Kullanmadan önce veri türlerini doğrulayın.

Veritabanı düzeyindeki bir kayıt, CREATE TYPE komutuyla oluşturulur ve veritabanı genelinde görülebilen bir nesne olarak saklanır. Alt program düzeyindeki bir kayıt ise bir blok içinde tanımlanır ve yalnızca o alt program içinde bulunur.

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