Final 2024-2025 20 soru

PL/SQL Veritabanı Programlama 2024-2025 Final

Kaynak: https://lolonolo.com/2025/11/15/pl-sql-veritabani-programlama-2024-2025-final-sorulari/

📖 Konu özeti (sınav öncesi tekrar)

PL SQL Veritabanı Programlama 2024-2025 Final Soruları

PL SQL Veritabanı Programlama 2024-2025 Final Soruları

PL SQL Veritabanı Programlama 2024-2025 Final Soruları

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
PL/SQL koleksiyonlarıyla ilgili aşağıda verilen şıklardan hangisi doğrudur?
CDoğru cevap
⚠️ Cevap anahtarı tartışmalı: VARRAY'de ilk eleman indisi 1'dir; A şıkkı da doğru. Anahtar C (o da doğru), birden fazla doğru şık var.
Soru 2

DECLARE
   CURSOR krsr_job ( p_min_salary NUMBER ) 
      RETURN jobs%ROWTYPE 
   IS 
      SELECT * 
      FROM jobs 
      WHERE min_salary > p_min_salary;
   
   rec jobs%ROWTYPE;
BEGIN
  ...
      EXIT WHEN krsr_job%NOTFOUND;
      DBMS_OUTPUT.PUT_LINE(rec.job_id || ' : ' || rec.job_title);
   END LOOP;
   CLOSE krsr_job;
END;

Yukarıda verilen krsr_job isimli kursör kullanılarak min_salary değeri 20000’den büyük satırlar FOR döngüsüyle konsola çıktılanmak istenmektedir. Programın çalışması için … üç nokta ile boş bırakılan satıra aşağıdaki şıklardan hangisi gelmelidir?
CDoğru cevap
Açıklama
PL/SQL’de kursör FOR döngüsü, FOR record IN cursor LOOP şeklinde kullanılır. Burada rec kayıt değişkeni, krsr_job kursörü ile parametreli olarak çağrılır.
Soru 3

DECLARE
   a NUMBER := 1;
   b NUMBER := 2;
   c NUMBER := 4;
BEGIN
   b := -2;
   DBMS_OUTPUT.PUT_LINE(2 * a - b / c);
END;

Yukarıda verilen programın çıktısı aşağıdaki hangi şıkta doğru verilmiştir?
DDoğru cevap
Açıklama
Hesaplama: 2*a – b/c = 2*1 – (-2)/4 = 2 – (-0.5) = 2.5. PL/SQL’de bölme işlemi ondalık sonuç verir.
Soru 4
PL/SQL paketlerle ilgili aşağıda verilenlerden hangisi yanlıştır?
CDoğru cevap
Açıklama
Paket gövdesinde private (özel) alt programlar tanımlanabilir, bunlar başlıkta bildirilmez. Bu ifade yanlıştır.
Soru 5

CREATE OR REPLACE TRIGGER trg_jobs
   BEFORE INSERT OR DELETE ON jobs
   FOR EACH ROW
BEGIN
   NULL;
END;

Yukarıda verilen triggerla ilgili verilen şıklardan hangisi yanlıştır?
BDoğru cevap
Açıklama
Bu trigger DML (INSERT/DELETE) olayları için tanımlanmıştır. DROP gibi DDL olayları için tetiklenmez; DDL trigger’lar ayrı tanımlanır.
Soru 6

ALTER SESSION SET plsql_implicit_conversion_bool = TRUE;

DECLARE
   a BOOLEAN := NULL;
   b BOOLEAN := FALSE;
   c BOOLEAN;
BEGIN
   c := TRUE AND NULL OR NOT(NULL);
   DBMS_OUTPUT.PUT_LINE('#' || c || '#');
END;

Yukarıda verilen programın çıktısı aşağıdaki hangi şıkta doğru verilmiştir?
ADoğru cevap
Açıklama 🤖 Yapay zekâ açıklaması

PL/SQL üç değerli mantık kullanır. TRUE AND NULL = NULL, NOT(NULL) = NULL ve NULL OR NULL = NULL olduğundan c NULL olur. NULL bir değer birleştirme (||) işleminde boş dize gibi davrandığı için çıktı ## olur.

Soru 7
PL/SQL kod mimarisiyle ilgili aşağıda verilenlerden hangisi doğrudur?
DDoğru cevap
Açıklama
İsimli bloklar (procedure/function) derlenip veritabanında saklanır, tekrar kullanımda daha hızlıdır. Anonim bloklar her seferinde ayrıştırılır.
Soru 8

BEGIN
   DBMS_OUTPUT.PUT_LINE(5 / 0);
EXCEPTION
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('Sıfıra bölme hatası!');
   WHEN VALUE_ERROR THEN
      DBMS_OUTPUT.PUT_LINE('Uyumsuz değer!');
END;

Yukarıda verilen PL/SQL programının çıktısı veya çalışmasıyla ilgili aşağıda verilen şıklardan hangisi doğrudur?
BDoğru cevap
Açıklama
EXCEPTION bloğunda WHEN OTHERS, WHEN value_error’dan önce tanımlanmış. OTHERS her zaman son handler olmalıdır, aksi takdirde derleyici hatası verir.
Soru 9
Aşağıda verilen alt programlardan hangisi geçerli ve doğru tanımlanmıştır?
CDoğru cevap
Açıklama
Bu prosedür geçerlidir. Diğerleri syntax hatası içerir (örneğin, procedure’ün RETURN tipi olmaz, parametreler RETURN’den sonra olamaz).
Soru 10

BEGIN
   DBMS_OUTPUT.PUT_LINE(5 / 0);
EXCEPTION
   WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE('Sıfıra bölme hatası!');
   WHEN VALUE_ERROR THEN
      DBMS_OUTPUT.PUT_LINE('Uyumsuz değer!');
END;

Yukarıda verilen programın çıktısı hangi şıkta doğru verilmiştir?
ADoğru cevap
Açıklama
DBMS_OUTPUT.PUT_LINE yeni satır ekler, PUT eklemez. İlk PUT_LINE’dan sonra PUT’lar aynı satırda birikir, son PUT_LINE yeni satır ekler.
Soru 11
İstisnalarla ilgili aşağıda verilenlerden hangisi yanlıştır?
DDoğru cevap
Açıklama
İstisnalar dış bloklara yayılabilir (propagate) ve orada işlenebilir. Kendi bloğunda işlenmek zorunda değildir.
Soru 12
Kursörün açık olup olmadığı bilgisini veren kursör öz niteliği aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
%ISOPEN, kursörün açık olup olmadığını BOOLEAN olarak döndürür.
Soru 13
Bir alt programa yalnızca belirtilen birimin (örneğin alt program) erişebilmesi için hangi cümlecik kullanılır?
DDoğru cevap
Açıklama
ACCESSIBLE BY clause, subprograma erişimi belirli unit’lerle sınırlar (whitelisting).
Soru 14

DECLARE
a NUMBER (3, -1) := 10.55;
b NUMBER (2, -1) := 11.55;
toplam PLS_INTEGER := a + b;
BEGIN
DBMS_OUTPUT.PUT_LINE (toplam);
END;

Yukarıda verilen programın çıktısı aşağıdaki hangi şıkta doğru verilmiştir?
BDoğru cevap
Açıklama
NUMBER(3,-1) ve (2,-1) ile değerler en yakın 10’a yuvarlanır: 10.55 → 10, 11.55 → 10. Toplam 20.
Soru 15
Aşağıda verilen PL/SQL koleksiyon metodlarından hangisi değişken boyutlu dizide veya iç içe tabloda belirtilen eleman mevcutsa TRUE değerini döndürür?
EDoğru cevap
Açıklama
EXISTS(indeks), koleksiyonda belirtilen indeksteki elemanın varlığını kontrol eder.
Soru 16
SELECT FOR UPDATE deyiminde bir başka kullanıcı tarafından kilitlenmiş satırların atlanmasını sağlayan komut aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
SKIP LOCKED, kilitli satırları atlayarak diğerlerini getirir.
Soru 17

DECLARE
...
BEGIN
SELECT * INTO rec_regions FROM regions
WHERE region_id = 4;
DBMS_OUTPUT.PUT_LINE('Bölge: ' || rec_
regions.region_name);
END;

Yukarıda verilen programın çalışması için üç nokta ile boş bırakılan satıra aşağıdaki şıklardan hangisi gelmelidir?
ADoğru cevap
Açıklama
%ROWTYPE, tablo satırını temsil eden record tipi tanımlar.
Soru 18

BEGIN
<< dis_dongu >> FOR i IN REVERSE 1..2
LOOP
<< ic_dongu >> FOR j IN 5..6 LOOP
DBMS_OUTPUT.PUT_LINE(i || ',
' || j);
EXIT dis_dongu WHEN i + j >=
6;
END LOOP ic_dongu;
END LOOP dis_dongu;
END;

Yukarıda verilen programın çıktısı hangi şıkta doğru verilmiştir?

Cevap anahtarı kaynakta yok.

Soru 19

BEGIN
   CASE
      WHEN FALSE AND NULL THEN
         DBMS_OUTPUT.PUT_LINE('$');
      WHEN NULL AND NULL THEN
         DBMS_OUTPUT.PUT_LINE('%');
      WHEN NULL OR NULL THEN
         DBMS_OUTPUT.PUT_LINE('&');
      WHEN NOT NULL THEN
         DBMS_OUTPUT.PUT_LINE('!');
      ELSE
         DBMS_OUTPUT.PUT_LINE('#');
   END CASE;
END;

Yukarıdaki PL/SQL programı çalıştırıldığında aşağıdaki çıktılardan hangisi elde edilir?
EDoğru cevap
Açıklama
Hiçbir WHEN koşulu TRUE olmadığından (hepsi NULL), ELSE bloğu çalışır ve # yazdırılır.
Soru 20
Oturumda geçerli tarih saat ve saat dilimini döndüren fonksiyon aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
CURRENT_TIMESTAMP, oturumun zaman dilimiyle geçerli tarih-saat döner.