Bütünleme 2024-2025 20 soru

PL/SQL Veritabanı Programlama 2024-2025 Bütünleme

Kaynak: https://lolonolo.com/2025/09/05/pl-sql-veritabani-programlama-2024-2025-butunleme-sorulari/

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

PL/SQL Veritabanı Programlama 2024-2025 Bütünleme Soruları

PL/SQL Veritabanı Programlama 2024-2025 Bütünleme Soruları (1-10)

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
PL/SQL alt program parametre modlarından hangisi, bir alt program parametre modundan hangisi, bir alt programın alt programa dışarıdan alındığını ve alt program içerisinde işlenebileceğini ifade eder?
CDoğru cevap
Açıklama
IN parametre modu, bir alt programa (procedure veya function) dışarıdan bir değerin girdi olarak alınmasını sağlar. Bu parametre, alt program içinde sadece okunabilir, değeri değiştirilemez.
Soru 2
PL/SQL dilinde döngülerle ilgili aşağıda verilenlerden hangisi yanlıştır?
EDoğru cevap
Açıklama
Bu ifade yanlıştır. Örneğin, bir WHILE döngüsünün başlangıç koşulu FALSE ise, döngü hiç çalışmadan atlanır. Her döngünün en az bir kez çalışacağı garantisi yoktur.
Soru 3
DECLARE
  ...
BEGIN
  FOR rec IN krsr_jobs(10000) LOOP
    DBMS_OUTPUT.PUT_LINE(rec.job_id || ' ' || rec.job_title);
  END LOOP;
END;

Yukarıdaki kodda “…” üç noktayla boş bırakılan yerde olması gereken kursör aşağıdaki şıklardan hangisinde verilmiştir?

Cevap anahtarı kaynakta yok.

Soru 4
PL/SQL anonim blok mimarisinde kod bölümlerinin sıralaması hangi seçenekte doğru verilmiştir?
CDoğru cevap
Açıklama
Standart bir PL/SQL anonim bloğunun yapısı sırasıyla: isteğe bağlı `DECLARE` (Deklarasyon) bölümü, zorunlu `BEGIN` (Uygulama) bölümü ve isteğe bağlı `EXCEPTION` (İstisna İşleme) bölümünden oluşur. Doğru sıralama budur.
Soru 5
Aşağıdaki niteliklerden hangisi kürsörle ilişkili sorgudan etkilenen satır sayısını verir?
ADoğru cevap
Açıklama
`%ROWCOUNT` imleç niteliği, bir `SELECT`, `INSERT`, `UPDATE` veya `DELETE` işlemi gerçekleştirildikten sonra o ana kadar etkilenen (getirilen, eklenen, güncellenen veya silinen) toplam satır sayısını tutan bir tamsayı değeri döndürür.
Soru 6
Aşağıdakilerden hangisi PLS_INTEGER alt veri tiplerinden biri değildir?
CDoğru cevap
Açıklama
`SIGNTYPE`, `SIMPLE_INTEGER`, `POSITIVE`, `NATURAL` gibi veri tipleri, `PLS_INTEGER`’ın belirli aralık veya özelliklere sahip alt türleridir. `BINARY_FLOAT` ise `PLS_INTEGER` ailesinden olmayan, farklı bir sayısal veri tipidir.
Soru 7
PL/SQL’de veri tipine uyumsuz bir değer verilmesi durumunda oluşan istisna aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Bir değişkene, tanımlandığı veri tipinin sınırlarını veya formatını aşan (örneğin `NUMBER(2)` tanımlı bir değişkene 100 atamak gibi) bir değer atanmaya çalışıldığında `VALUE_ERROR` istisnası oluşur.
Soru 8
Aşağıdaki şıklardan hangisinde değerlerin birer VARCHAR2 veri tipinde değer saklayabilen anahtarlarını (indekslerini) PLS_INTEGER veri tipi ile ilişkisel Dizi (Associative Array) doğru tanımlanmıştır?
BDoğru cevap
Açıklama
İlişkisel Dizi (Associative Array) tanımının sözdizimi `TABLE OF INDEX BY ` şeklindedir. B şıkkı, `VARCHAR2(100)` tipinde değerleri olan ve `PLS_INTEGER` tipinde bir anahtar (indeks) ile erişilen bir diziyi doğru bir şekilde tanımlamaktadır.
Soru 9
PL/SQL dilinde girdi/çıktı komutlarının yer aldığı paket aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
PL/SQL’de veritabanından ekrana çıktı basmak ve hata ayıklama mesajları göstermek için Oracle tarafından sağlanan standart paket `DBMS_OUTPUT` paketidir.
Soru 10
Aşikar kursörü kapatmak için aşağıdaki deyimlerden hangisi kullanılır?
BDoğru cevap
Açıklama
Açık (aşikar) bir imleç (explicit cursor) ile işiniz bittiğinde, sistem kaynaklarını serbest bırakmak için `CLOSE imleç_adı;` komutu kullanılır.
Soru 11
Aşağıdaki değişkenlerden hangisinin değeri diğerlerinden farklıdır?
EDoğru cevap
Açıklama
`NUMBER(5)` veya `NUMBER(5,0)` tanımlamaları tamsayı saklar ve atanan ondalıklı değerleri en yakın tamsayıya yuvarlar. .5 ve üzeri yukarı, altı ise aşağı yuvarlanır. İlk dört şıktaki değerler 12345’e yuvarlanırken, E şıkkındaki 12345.678 değeri 12346’ya yuvarlanır ve bu nedenle diğerlerinden farklı olur.
Soru 12
PL/SQL paketlerle ilgili aşağıda verilenlerden hangisi doğrudur?
EDoğru cevap
Açıklama
Bir paket gövdesi, prosedürler ve fonksiyonlar gibi alt programların yanı sıra, paket ilk çağrıldığında bir defaya mahsus çalıştırılacak olan bir başlatma (initialization) bloğu içerebilir. Bu blok, adsız (anonim) bir `BEGIN…END;` bloğudur.
Soru 13
Aşağıdaki literallerden hangisi geçersizdir?
BDoğru cevap
Açıklama
PL/SQL’de ve genel olarak SQL’de ondalık ayırıcı olarak virgül (,) değil, nokta (.) kullanılır. Bu nedenle `3,14` ifadesi geçersiz bir sayısal literaldir.
Soru 14
İki veya daha fazla karakter dizesini birleştirmek için kullanılan operatör aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
PL/SQL’de metin (karakter dizesi) birleştirme işlemi için boru (pipe) karakterlerinden oluşan `||` operatörü kullanılır.
Soru 15
departments tablosunun department_name kolonundaki değişiklikten önce çalışacak olan trg_upd_dept_name isimli satır seviyesi bir trigger tanımlamak için aşağıdaki şıklardan hangisi doğru bir sözdizimine sahiptir?
ADoğru cevap
Açıklama
Soruda istenen tüm şartları sağlayan doğru sözdizimi A şıkkındadır. Tetikleyicinin sadece `department_name` kolonu güncellendiğinde çalışması için `UPDATE OF department_name` ifadesi, `departments` tablosu üzerinde çalıştığını belirtmek için `ON departments` ifadesi ve her bir satırdaki değişiklik için çalışmasını sağlamak (satır seviyesi) için `FOR EACH ROW` ifadesi gereklidir.
Soru 16
PL/SQL’de bir Record değişkeninin veri alanlarına erişmek için kullanılan operatör aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
Bir Kayıt (Record) tipindeki değişkenin içindeki alanlara (field) erişmek için değişken adı ile alan adı arasına nokta `.` operatörü konulur (örneğin: `calisan_kaydi.adi`).
Soru 17
BEGIN
CASE
  WHEN NULL OR NULL THEN DBMS_OUTPUT.PUT_LINE('?');
  WHEN FALSE AND NULL THEN DBMS_OUTPUT.PUT_LINE('!');
  WHEN TRUE OR NULL THEN DBMS_OUTPUT.PUT_LINE(']');
  WHEN 5 BETWEEN 1 AND 6 THEN DBMS_OUTPUT.PUT_LINE('{');
ELSE
  DBMS_OUTPUT.PUT_LINE('`');
END CASE;
END;

Yukarıda verilen PL/SQL programının çıktısı aşağıdaki hangi şıkta doğru verilmiştir?
DDoğru cevap
Açıklama
PL/SQL’de `CASE` ifadesi, `TRUE` olarak değerlendirilen ilk `WHEN` koşulunu çalıştırır ve sonlanır. `NULL` ile yapılan mantıksal işlemlerin sonucu `NULL`’dur (bilinmiyor). `TRUE OR NULL` işleminin sonucu ise `TRUE`’dur. Bu nedenle program üçüncü `WHEN` koşuluna girer ve ekrana `]` karakterini basar.
Soru 18
DECLARE
  TYPE type_bolum IS RECORD (
    adi VARCHAR2(50),
    egitim_turu VARCHAR2(20),
    egitim_duzeyi VARCHAR2(10)
  );
  bolum_rec type_bolum;
BEGIN
  ...
END;

Yukarıda verilen PL/SQL kodunda, “…” ile belirtilen boşlukta Record veri yapısına yapılacak değer ataması aşağıdaki seçeneklerden hangisinde doğru şekilde verilmiştir?
ADoğru cevap
Açıklama
Bir kayıt (record) değişkeninin alanlarına değer atamanın en standart yolu, her bir alana nokta `.` operatörü ile ayrı ayrı erişerek atama `:=` operatörünü kullanmaktır. A şıkkı bu doğru yöntemi göstermektedir.
Soru 19
PL/SQL’de Trigger ve Procedure yapılarıyla ilgili aşağıda verilen ifadelerden hangisi yanlıştır?
DDoğru cevap
Açıklama
Prosedürler (Procedure) dışarıdan parametre alabilirler. Ancak tetikleyiciler (Trigger), bir DML olayına (INSERT, UPDATE, DELETE) bağlı olarak otomatik çalıştıkları için doğrudan parametre alamazlar. Değişen satırın eski ve yeni değerlerine `:NEW` ve `:OLD` bağlama değişkenleri ile erişirler.
Soru 20
Aşağıdaki şıkların hangisinde sırasıyla tam sayı ve ondalıklı sayı veri tiplerinde parametre alan ve PLS_INTEGER veri tipinde değer döndüren PL/SQL fonksiyon örneği verilmiştir?

Cevap anahtarı kaynakta yok.

Açıklama
Soruda fonksiyonun sırasıyla bir “tam sayı” ve bir “ondalıklı sayı” parametresi alması ve `PLS_INTEGER` tipinde bir değer döndürmesi istenmektedir. D şıkkındaki `(a SMALLINT, b FLOAT)` ifadesi bu sıralamaya uymaktadır (`SMALLINT` bir tam sayı, `FLOAT` ise ondalıklı bir sayıdır). Ayrıca fonksiyon `RETURN PLS_INTEGER` ifadesi ile istenen değeri döndürmektedir. Diğer şıklarda ya parametrelerin sırası yanlıştır ya da fonksiyonun döndürdüğü veri tipi yanlıştır.