Oracle Örneklerle PL/SQL Kayıt Türü
Kayıt Türü Nedir?
Kayıt türü, programcının istediği sütun yapısına sahip yeni bir veri türü oluşturmasına olanak veren karmaşık bir veri türüdür.
- Yeni bir veri türü oluşturmak için bir veya daha fazla sütunu gruplandırır
- Bu sütunların kendi adı ve veri türü olacaktır
- Bir Kayıt türü verileri kabul edebilir
- Birçok sütundan oluşan tek bir kayıt olarak VEYA
- Bir kaydın belirli bir sütununun değerini kabul edebilir
- Kayıt türü basitçe yeni bir veri türü anlamına gelir. Kayıt tipi oluşturulduktan sonra veritabanında yeni bir veri tipi olarak saklanacak ve programlarda bir değişken bildirmek için aynısı kullanılacaktır.
- Anahtar kelimeyi kullanacak 'TİP' derleyiciye yeni veri türünü oluşturduğunu bildirmek için.
- Şu adreste oluşturulabilir: "veritabanı seviyesi” Veritabanı nesneleri olarak saklanabilen, veritabanının her yerinde kullanılabilen veya “alt program seviyeleri”, yalnızca alt programların içinde görülebilir.
- Tablo sütunları için de veritabanı düzeyindeki kayıt türü bildirilebilir, böylece karmaşık veriler tek bir sütunda tutulabilir.
- Bu veri türündeki verilere, değişken_adı, ardından nokta operatörü (.) ve ardından sütun_adı yani ' . '
Veritabanı düzeyinde bildirimin sözdizimi:
CREATE TYPE <type_name_db> IS RECORD ( <column 1> <datatype>, );
İlk sözdiziminde, 'CREATE TYPE' anahtar kelimesini görebiliriz; bu, derleyiciye, bir veritabanı nesnesi olarak belirtilen sütunla birlikte “type_name_db” adlı kayıt türünü oluşturma talimatını verir.
Bu, herhangi bir bloğun içinde değil, bireysel bir açıklama olarak verilmiştir.
Alt program seviyesinde bildirimin sözdizimi:
DECLARE TYPE <type_name> IS RECORD ( <columnl> <datatype>, ); BEGIN <execution_section>; END;
Söz diziminde “type_name” isimli kayıt tipini sadece alt program içerisinde oluşturuyoruz.
Her iki bildirim yönteminde de sütun ve veri tipinin tanımlanma şekli benzerdir.
Örnek 1: Veritabanı Nesnesi Olarak RECORD Türü
Bu programda veritabanı nesnesi olarak “Kayıt tipi”nin nasıl oluşturulacağını göreceğiz. Dört sütunlu 'emp_det' kayıt tipini oluşturacağız. Sütunlar ve veri türleri aşağıdaki gibidir:
- 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
Kod Açıklaması:
- Yukarıdaki kod, bir veritabanı nesnesi olarak emp_det türünü yaratacaktır.
- Tanımlandığı gibi 4 sütun emp_no, emp_name, yönetici ve maaşa sahip olacaktır.
- Artık 'emp_det' diğerine benzer veri tipi (NUMBER, VARCHAR@ vb. gibi) Ve tüm veritabanında görünür. Dolayısıyla bu, bu türdeki değişkeni bildirmek için veritabanının tamamında kullanılabilir.
Çıktı:
Veritabanı düzeyinde kayıt türü olarak 'emp_det' türü oluşturuldu.
Örnek 2: Alt Program Düzeyinde Kayıt Türü - 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 bu kayıt türünden değerlerin sütun düzeyine göre nasıl doldurulacağını ve getirileceğini göreceğiz.
Alt program düzeyinde 'emp_det' kayıt_tipi oluşturacağız ve aynısını, verileri doldurmak ve görüntülemek için kullanacağız.
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
Kod Açıklaması:
- Kod satırı 2-8: 'emp_det' kayıt türü, NUMBER, VARCHAR2, NUMBER, NUMBER veri türünün emp_no, emp_name, maaş ve yöneticisi sütunlarıyla bildirildi.
- Kod satırı 9: guru99_emp_rec değişkeni 'emp_det' veri türü olarak bildirildi. Şimdi bu değişken yukarıdaki 4 alanın/sütunların tümünü içeren değeri tutabilir.
- Kod satırı 11: 'Guru99_emp_rec'in 'emp_no' alanını 1001 değeriyle doldurma.
- Kod satırı 12: 'Guru99_emp_rec'in 'emp_name' alanını XXX değeriyle doldurma.
- Kod satırı 13: 'Guru99_emp_rec'in 'yönetici' alanını 1000 değeriyle doldurma.
- Kod satırı 14: 'Guru99_emp_rec'in 'maaş' alanını 10000 değeriyle doldurma.
- Kod satırı 15-19: Çıkışta 'guru99_emp_rec' değeri gösteriliyor.
Örnek 3: Alt Program Düzeyinde Kayıt Türü-Satır Düzeyi Erişimi
Bu örnekte alt program seviyesinde kayıt tipinin nasıl oluşturulacağını ve satır seviyesinde nasıl doldurulacağını göreceğiz. Alt program düzeyinde 'emp_det' kayıt_tipi oluşturacağız ve aynısını, verileri doldurmak ve görüntülemek için kullanacağız.
DECLARE TYPE emp_det IS RECORD ( EMP_NO NUMBER, EMP_NAME YARCHAR2( 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; /
Kod Açıklaması:
- Kod satırı 2-8: 'emp_det' kayıt türü, NUMBER, VARCHAR2, NUMBER, NUMBER veri türünün emp_no, emp_name, maaş ve yöneticisi sütunlarıyla bildirildi.
- Kod satırı 9: guru99_emp_rec değişkeni 'emp_det' veri türü olarak bildirildi. Artık bu değişken yukarıdaki 4 alanın/sütunun tamamını içeren değeri tutabilir.
- Kod satırı 11: Emp tablosunu emp_no olarak 1002, emp_name olarak YYY, maaş olarak 15000 ve yönetici numarası olarak 1000 verileriyle dolduruyoruz.
- Kod satırı 12: Yukarıdaki ekleme işlemini gerçekleştiriyoruz.
- Kod satırı 13: 'Guru99_emp_rec' değişkeni, 1002 numaralı çalışan için seçme sorgusundan satır düzeyinde veri olarak dolduruluyor.
- Kod satırı 15-19: Çıkışta 'guru99_emp_rec' değeri gösteriliyor.
Çıktı:
Employee Detail Employee Number: 1002 Employee Name: YYY Employee Salary: 1000 Employee Manager Number: 15000
Not: Kayıt türüne, değeri herhangi bir çıkış moduna yönlendirilirken yalnızca sütun düzeyinde erişilebilir.