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.

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:
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:
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.
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.
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.




