PL/SQL Records

Oracle PL/SQL ile birden fazla veriyi tekbir değişken üzerinden kontrol etmek için kullanılan records yapısı ile ilgili bilgiler yer alıyor.

Records

Oracle PL/SQL içerisinde yer alan NUMBER, VARCHAR, VARCHAR2 gibi veri türleri tek bir veriyi saklamak için kullanılır.

Ancak birbiriyle ilişkili birden fazla değişken tanımlamak yazılan kodların karmaşık olmasına neden olur.

Record tek bir değişken içerisinde birden fazla değer saklamak için kullanılan Composite bir veri türüdür.

Record veri türü tanımlaması tablo (table-based), işaretçi (cursor-based) ve kullanıcı tanımlı (user-defined) ile yapılır.

Tablo-based

Bu tür tanımlamada TABLO_ADI%ROWDTYPE yapısı kullanılarak Record tanımlaması yapılır.

Aşağıdaki örnekte contacts tablosunda yer alan bazı sütunlar kullanılarak KISI adında record veri türü oluşturulmuştur.

DECLARE
    KISI contacts%ROWTYPE;
BEGIN
    KISI.first_name := 'Yusuf';
    KISI.last_name := 'SEZER';
    KISI.email := 'yusufsezer@mail.com';
    KISI.phone := '+905386934533';
    DBMS_OUTPUT.put_line(KISI.first_name || ' ' || KISI.last_name || ' - ' || KISI.email || ' - ' || KISI.phone);
END;

Cursor-Based

Bu tür tanımlamada Cursor ile belirlenen alanlar CURSOR_ADI%ROWDTYPE ile alınarak record tanımlaması yapılır.

Aşağıdaki örnekte LISTELE işaretçisinin (cursor) gösterdiği sütunlar kullanılarak KISI adında record veri türü oluşturulmuştur.

DECLARE
    CURSOR LISTELE IS
        SELECT first_name, last_name, email, phone FROM contacts;
  KISI lISTELE%ROWTYPE;
BEGIN
  KISI.first_name := 'Yusuf';
  KISI.last_name := 'SEZER';
  KISI.email := 'yusufsezer@mail.com';
  KISI.phone := '+905386934533';
  DBMS_OUTPUT.put_line(KISI.first_name || ' ' || KISI.last_name || ' - ' || KISI.email || ' - ' || KISI.phone);
END;

User-defined

Bu tür tanımlamada record içerisinde yer alacak değişkenler TYPE anahtar kelimesi kullanılarak tanımlanır.

Aşağıdaki örnekte LISTELE işaretçisinin(cursor) gösterdiği sütunlar kullanılarak KISI adında record veri türü oluşturulmuştur.

Aşağıdaki örnekte TYPE ile KISI adında first_name, last_name, email, phone değerlerini içeren Record tanımlaması yapılmıştır.

DECLARE
    TYPE KISI IS RECORD (
        first_name VARCHAR2(255),
        last_name VARCHAR2(255) NOT NULL DEFAULT 'SEZER',
        email VARCHAR2(255),
        phone VARCHAR2(20)
    );
  K1 KISI;
BEGIN
  K1.first_name := 'Yusuf';
  -- K1.last_name := 'SEZER';
  K1.email := 'yusufsezer@mail.com';
  K1.phone := '+905386934533';
  DBMS_OUTPUT.put_line(K1.first_name || ' ' || K1.last_name || ' - ' || K1.email || ' - ' || K1.phone);
END;

Kullanıcı tanımlı record içerisinde daha önceden tanımlanan record veri türleri de kullanılabilir.

Record veri türünün diğer bir önemli özelliği ise prosedür, fonksiyon gibi parametre alan yapılara parametre olarak verilmesidir.

Bu sayede ilişkili parametreler gruplanarak tek bir record ile işlem yapılabilir.

PL/SQL Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!