PL/SQL Veri Türleri ve Değişkenler

Oracle PL/SQL dilinde yer alan veri türleri veya tipleri, değişken tanımlama ve kullanımı ile ilgili bilgiler yer alıyor.

Veri türleri

Veri türleri veya veri tipleri verilerin bellekte saklanış biçimini belirtir.

PL/SQL verileri saklamak için çeşitli veri türlerine sahiptir.

PL/SQL veri türleri Scalar, Large Object, Composite ve Refence olmak üzere dört bölüme ayrılır.

Scalar

Scalar veri türleri içerisinde tek bir veriyi saklayan NUMBER, DATE, BOOLEAN gibi veri türleridir.

Sayısal veri türleri

PLS_INTEGER, BINARY_INTEGER, BINARY_FLOAT, BINARY_DOUBLE, NUMBER(prec, scale), DEC(prec, scale), DECIMAL(prec, scale), NUMERIC(pre, secale), DOUBLE PRECISION, FLOAT, INT, INTEGER, SMALLINT, REAL

SET SERVEROUTPUT ON;
DECLARE
    v_sayi_1 INT := 1;
    v_sayi_2 INTEGER := 2;
    v_sayi_3 PLS_INTEGER := 3;
    v_sayi_4 DOUBLE PRECISION := 4;
BEGIN
    DBMS_OUTPUT.put_line(v_sayi_1);
    DBMS_OUTPUT.put_line(v_sayi_2);
    DBMS_OUTPUT.put_line(v_sayi_3);
    DBMS_OUTPUT.put_line(v_sayi_4);
END;

Karakter veri türleri

CHAR, VARCHAR2, RAW, NCHAR, NVARCHAR2, LONG, LONG RAW, ROWID, UROWID

SET SERVEROUTPUT ON;
DECLARE
    v_adim_1 CHAR(5) := 'YUSUF';
    v_adim_2 VARCHAR2(5) := 'YUSUF';
    v_adim_3 NCHAR(5) := 'YUSUF';
    v_adim_4 NVARCHAR2(5) := 'YUSUF';
BEGIN
    DBMS_OUTPUT.put_line(v_adim_1);
    DBMS_OUTPUT.put_line(v_adim_2);
    DBMS_OUTPUT.put_line(v_adim_3);
    DBMS_OUTPUT.put_line(v_adim_4);
END;

Mantıksal veri türü

BOOLEAN veri türü mantıksal olarak TRUE, FALSE değer NULL değerlerini alır.

Tarih/saat veri türleri

DATE, TIMESTAMP, INTERVAL

SET SERVEROUTPUT ON;
DECLARE
    v_tarih DATE := SYSDATE;
    v_tarih_saat TIMESTAMP := SYSTIMESTAMP;
    v_ay INTERVAL YEAR (2) TO MONTH := INTERVAL '15' MONTH;
BEGIN
    DBMS_OUTPUT.put_line(v_tarih);
    DBMS_OUTPUT.put_line(v_tarih_saat);
    DBMS_OUTPUT.put_line(v_ay);
END;

Large Object

Large Object veri türleri ise metin, resim, video gibi dosyaları saklayan veri türüdür.

BFILE, BLOB, CLOB, NCLOB

SET SERVEROUTPUT ON;
DECLARE
    v_dosya_adi VARCHAR2(255) := 'elma.jpg';
    v_dosya BFILE := bfilename('BLOB_DIR', v_dosya_adi);
BEGIN
    NULL;
END;

Composite

Composite veri türleri ise içerisinde birden fazla değeri taşıyan Collections ve Records gibi veri türleridir.

Reference

Reference veri türü ise daha önceden tanımlanan veri türlerine işaret eden veri türüdür.

NOT: Bazı veri türleri aynı özelliğe sahiptir.

Kullanıcı tanımlı veri türleri

PL/SQL kullanıcıların veri türü tanımlamasına imkan verir.

SET SERVEROUTPUT ON;
DECLARE
    SUBTYPE adi_soyadi IS VARCHAR2(80);
    yusuf_sezer adi_soyadi := 'Yusuf Sefa SEZER';
BEGIN
    DBMS_OUTPUT.put_line(yusuf_sezer);
END;

Kullanıcı tanımlı veri türleri kullanarak gereksiz uzunlukta verilerin oluşmasının önüne geçilir.

Ayrıca geliştirilen PL/SQL programlarının daha anlamlı olması sağlanır.

Değişkenler

PL/SQL verileri geçici olarak saklamak için değişkenlerin kullanımına imkan verir.

Değişken tanımlaması aşağıdaki gibi yapılır.

degisken_adi [CONSTANT] veri_turu [NOT NULL] [:= | DEFAULT baslangic_degeri] 

Değişkenler en fazla 30 karakter uzunluğunda olabilir.

adi_soyadi, v_adi_soyadi

Değişkenler ASCII karakteri ile başlamak zorundadır.

1_adi_soyadi olamaz, ü_adi_soyadi olamaz

v_adi_soyadi VARCHAR2(80);

Değişkenlere başlangıç değeri vermek için := ve DEFAULT anahtar kelimesi kullanılabilir.

v_adi_soyadi VARCHAR2(80) := 'Yusuf SEZER';
v_adi_soyadi VARCHAR2(80) DEFAULT 'Yusuf SEZER';

Değişkenlerin NULL değerini almaması için NOT NULL anahtar kelimesi kullanılabilir.

SET SERVEROUTPUT ON;
DECLARE
    v_adi_soyadi VARCHAR2(20) NOT NULL := 'Yusuf Sefa SEZER';
BEGIN
    --v_adi_soyadi := ''; -- hata verecektir.
    --v_adi_soyadi := NULL; -- hata verecektir.
    DBMS_OUTPUT.put_line(v_adi_soyadi);
END;

Değişkenin veri türü tabloda yer alan sütuna ait veri türü olabilir.

v_adi_soyadi tablo.sutun%TYPE;

Değişkeni sabit yapmak için CONSTANT anahtar kelimesi kullanılabilir.

SET SERVEROUTPUT ON;
DECLARE
    PI CONSTANT NUMBER := 3.141592654;
BEGIN
    --PI := 1; -- hata verecektir.
    DBMS_OUTPUT.put_line(PI);
END;

Literals

PL/SQL içerisindeki değişmeyen değerler literal olarak adlandırılır.

‘Merhaba Oracle’

TRUE, FALSE, NULL

‘A’

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!