Oracle PL/SQL Ekleme, Güncelleme, Silme ve İçine Seçme [Örnek]
⚡ Akıllı Özet
SQL ifadeleri içinde Oracle PL/SQL, veri işleme işlemlerinin her birini tek bir blok halinde gerçekleştirerek, doğrudan satır ekleme, güncelleme, silme ve seçme işlemlerini mümkün kılar. INSERT, UPDATE, DELETE ve SELECT INTO komutları, veritabanı içinde veri taşır ve veri alır.
PL/SQL'de DML İşlemleri
DML, Veri İşleme Dili anlamına gelir ve bir dil grubudur. SQL Bir tabloda saklanan verileri değiştiren komutlar. PL/SQL bloğuBu komutlar manipülasyon işini gerçekleştirirken, PL/SQL çevreleyen mantığı sağlar. DML ise aşağıdaki işlemleri yürütür.
- Veri Ekleme
- Veri Güncelleme
- Veri Silme
- Veri Seçimi
PL/SQL'de veri işleme yalnızca SQL komutları aracılığıyla gerçekleştirilir.
Veri Ekleme
PL/SQL'de, INSERT INTO SQL komutu ile bir tabloya satırlar eklenir. Bu komut, girdi olarak tablo adını, hedef sütunları ve sütun değerlerini alır ve ardından değeri temel tabloya ekler.
INSERT komutu, her sütun için değerleri tek tek vermek yerine, SELECT sorgusu kullanarak değerleri doğrudan başka bir tablodan da alabilir. SELECT sorgusu aracılığıyla, kaynak tabloda bulunan satır sayısı kadar satır aynı anda eklenebilir.
Sözdizimi:
BEGIN INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>) VALUES(<value1>,<value2>,...,<value_n>); END;
Yukarıdaki sözdizimi, INSERT INTO komutunu göstermektedir. Tablo adı ve değerler zorunlu alanlardır, oysa INSERT ifadesi tablonun her sütunu için değerler sağladığında sütun adları isteğe bağlıdır. Yukarıda gösterildiği gibi, değerler ayrı ayrı verildiğinde VALUES anahtar kelimesi zorunludur.
Sözdizimi:
BEGIN INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>) SELECT <column1>,<column2>,...,<column_n> FROM <table_name2>; END;
INSERT INTO komutunun bu ikinci biçimi, değerleri doğrudan şuradan alır: SELECT komutu kullanılarak. Değerler ayrı olarak sağlanmadığı için VALUES anahtar kelimesi burada bulunmamalıdır.
Veri Güncelleme
Veri güncelleme, mevcut bir satırdaki bir sütunun değerini değiştirmek anlamına gelir. Bu işlem, tablo adını, sütun adını ve yeni değeri girdi olarak alan ve veriyi güncelleyen UPDATE ifadesiyle yapılır.
Sözdizimi:
BEGIN UPDATE <table_name> SET <column1>=<value1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be updated>; END;
Yukarıdaki sözdizimi UPDATE ifadesini göstermektedir. SET anahtar kelimesi, PL/SQL motoruna sütunu verilen değerle güncellemesini söyler. WHERE yan tümcesi isteğe bağlıdır; verilmezse, belirtilen sütunun değeri tüm tabloda güncellenir.
Veri Silme
Veri silme, veritabanı tablosundan tek bir kaydı tamamen kaldırmak anlamına gelir. Bu amaçla DELETE komutu kullanılır.
Sözdizimi:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be deleted>; END;
Yukarıdaki sözdizimi DELETE komutunu göstermektedir. FROM anahtar kelimesi isteğe bağlıdır ve FROM yan tümcesi olsun veya olmasın komut aynı şekilde davranır. WHERE yan tümcesi de isteğe bağlıdır; verilmezse, tablonun tamamı boşaltılır.
Veri Seçimi
Veri projeksiyonu veya veri çekme, veritabanı tablosundan gerekli verilerin alınması anlamına gelir. Bu, SELECT komutu ve INTO yan tümcesi birlikte kullanılarak gerçekleştirilir. SELECT komutu veritabanından değerleri çeker ve INTO yan tümcesi bu değerleri PL/SQL bloğunun yerel değişkenlerine atar.
SELECT ifadesini INTO ile birlikte kullanırken aşağıdaki noktalara dikkat edilmelidir:
- INTO yan tümcesi kullanılırken SELECT sorgusu yalnızca bir kayıt döndürmelidir, çünkü bir değişken yalnızca bir değer tutabilir. SELECT sorgusu birden fazla satır döndürürse, ÇOK_ÇOK_SATIR istisnası yükseltildi.
- SELECT ifadesi, INTO yan tümcesindeki değişkene değer atar; bu nedenle, değeri doldurmak için en az bir kayda ihtiyaç duyar. Herhangi bir kayıt bulamazsa, NO_DATA_FOUND istisnası fırlatılır.
- SELECT yan tümcesindeki sütun sayısı ve veri tipleri, INTO yan tümcesindeki değişken sayısı ve veri tipleriyle eşleşmelidir.
- Değerler, açıklamada belirtildiği gibi aynı sırayla alınır ve doldurulur.
- WHERE koşulu isteğe bağlıdır ve getirilen kayıtlara daha fazla kısıtlama getirmenizi sağlar.
- SELECT ifadesi, diğer DML ifadelerinin WHERE koşulunda koşulların değerlerini tanımlamak için kullanılabilir.
- INSERT, UPDATE veya DELETE ifadelerinin içinde kullanılan bir SELECT ifadesi, bu durumlarda herhangi bir değişkeni doldurmadığı için INTO yan tümcesi içermemelidir.
Sözdizimi:
BEGIN SELECT <column1>,...,<column_n> INTO <variable1>,...,<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
Yukarıdaki sözdizimi, SELECT-INTO komutunu göstermektedir. FROM anahtar kelimesi zorunludur ve verilerin hangi tablodan alınması gerektiğini belirtir. WHERE yan tümcesi isteğe bağlıdır; belirtilmezse, tablonun tamamından veri alınır.
Örnek 1: Bu örnekte, PL/SQL'de DML işlemlerinin nasıl gerçekleştirileceğini göreceğiz. Aşağıdaki dört kaydı emp tablosuna ekleyeceğiz.
| EMP_NAME | EMP_NO | MAAŞ | MÜDÜRÜ |
|---|---|---|---|
| BBB | 1000 | 25000 | AAA |
| XXX | 1001 | 10000 | BBB |
| YYY | 1002 | 10000 | BBB |
| ZZZ | 1003 | 7500 | BBB |
Ardından 'XXX' çalışanının maaşını 15000 olarak güncelleyeceğiz, 'ZZZ' çalışan kaydını sileceğiz ve son olarak 'XXX' çalışanının bilgilerini yansıtacağız.
Aşağıdaki ekran görüntüsü, bu örnek için kullanılan PL/SQL bloğunun tamamını göstermektedir.
DECLARE l_emp_name VARCHAR2(250); l_emp_no NUMBER; l_salary NUMBER; l_manager VARCHAR2(250); BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('BBB',1000,25000,'AAA'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('XXX',1001,10000,'BBB'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('YYY',1002,10000,'BBB'); INSERT INTO emp(emp_name,emp_no,salary,manager) VALUES('ZZZ',1003,7500,'BBB'); COMMIT; Dbms_output.put_line('Values Inserted'); UPDATE EMP SET salary=15000 WHERE emp_name='XXX'; COMMIT; Dbms_output.put_line('Values Updated'); DELETE emp WHERE emp_name='ZZZ'; COMMIT; Dbms_output.put_line('Values Deleted'); SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX'; Dbms_output.put_line('Employee Detail'); Dbms_output.put_line('Employee Name:'||l_emp_name); Dbms_output.put_line('Employee Number:'||l_emp_no); Dbms_output.put_line('Employee Salary:'||l_salary); Dbms_output.put_line('Employee Manager Name:'||l_manager); END; /
Çıktı:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Code Açıklama:
- Code 2-5. satırlar: Değişkenleri tanımlama.
- Code 7-14. satırlar: Kayıtlar emp tablosuna ekleniyor.
- Code 15 hattı: Ekleme işlemleri onaylanıyor.
- Code 17-19. satırlar: 'XXX' çalışanının maaşı 15000 olarak güncelleniyor.
- Code 20 hattı: Güncelleme işlemini onaylama.
- Code 22 hattı: 'ZZZ' kaydı siliniyor.
- Code 23 hattı: Silme işlemi onaylanıyor.
- Code 25 hattı: 'XXX' kaydını seçin ve l_emp_name, l_emp_no, l_salary ve l_manager değişkenlerini doldurun.
- Code 26-30. satırlar: Getirilen kayıt değerleri görüntüleniyor.


