Oracle PL/SQL Veri Türleri: Boolean, Sayı, Tarih [Örnek]

⚡ Akıllı Özet

PL/SQL Veri Tipleri, nasıl yapılacağını tanımlar. Oracle Blok içindeki her değeri depolar, işler ve sınırlandırır. Karakter, sayı, Boolean, tarih ve büyük nesne (LOB) aileleri halinde gruplandırılırlar ve her birinin kendi depolama biçimi, boyut sınırları ve atama kuralları vardır.

  • 🔤 Karakter: CHAR sabit uzunluklu, VARCHAR2 değişken uzunluklu, NCHAR ve NVARCHAR2 ise ulusal karakter kümesini kullanır.
  • 🔢 Numara: NUMBER değişkeni, 38 basamağa kadar hassasiyette sabit veya ondalıklı değerler saklar.
  • Boole: DOĞRU veya YANLIŞ değerini alır ve çoğunlukla koşullu mantıkta kullanılır.
  • 📅 Tarih: Tarih ve saati saklar; saat belirtilmediğinde varsayılan olarak gece yarısını kullanır.
  • 🗂️ LOB: BLOB, CLOB, NCLOB ve BFILE, 128 TB'a kadar büyük, yapılandırılmamış verileri depolar.
  • ???? En iyi pratik: Bellekten tasarruf etmek ve geleceğe yönelik çözümler sunmak için CHAR yerine VARCHAR2'yi, LONG yerine LOB'u tercih edin.
  • 🔗 Dürbün: SQL veri tipleri tablo sütunlarına uygulanır; PL/SQL veri tipleri ise PL/SQL bloklarının içinde kullanılır.

Oracle PL/SQL Veri Türleri

PL/SQL Veri Tipleri Nelerdir?

Veri tipleri PL/SQL'de verilerin nasıl saklanacağı, işleneceği ve ele alınacağı tanımlanır. Oracle Depolama ve işleme sırasında. Veri türleri belirli bir depolama biçimi ve aralık kısıtlamalarıyla ilişkilidir. OracleHer değere veya sabite bir veri türü atanır.

PL/SQL ve arasındaki temel fark SQL SQL veri tipleri tablo sütunlarıyla sınırlıyken, PL/SQL veri tipleri daha geniş bir kullanım alanına sahiptir. PL/SQL blokları. Bu konuya eğitimin ilerleyen kısımlarında değineceğiz.

Aşağıda farklı türlerin diyagramı yer almaktadır. Oracle PL/SQL veri tipleri:

PL/SQL'de Farklı Veri Türleri
PL/SQL'de Farklı Veri Türleri

PL/SQL KARAKTER Veri Türü

Bu veri türü, alfanümerik karakterleri dize biçiminde saklar. CHARACTER veri türüne değer atanırken, sabit değerler her zaman tek tırnak içine alınmalıdır.

Bu karakter veri türü ayrıca aşağıdaki şekilde sınıflandırılır:

  • CHAR veri tipi (sabit dize boyutu)
  • VARCHAR2 veri tipi (değişken dize boyutu)
  • VARCHAR veri türü
  • NCHAR (yerel sabit dize boyutu)
  • NVARCHAR2 (yerel değişken dize boyutu)
  • UZUN ve UZUN HAM
Veri tipi Açıklama Sözdizimi
TANK Bu veri türü bir dize değeri saklar ve dizenin boyutu, tanımlandığı anda sabitlenir. değişken.

  • Oracle Eğer değişken, belirtilen boyutun tamamını kaplamıyorsa, boşluklarla doldurur. Oracle Değişken belleği doldurmasa bile, belirtilen boyutta bellek ayırır.
  • Boyut sınırlaması 1-2000 bayttır.
  • CHAR, sabit boyutlu verilerin işlendiği durumlarda daha uygundur.
grade CHAR;
manager CHAR (10):= 'guru99';

Sözdizimi Açıklaması:

  • İlk ifade, 'grade' değişkenini CHAR veri tipinde ve maksimum 1 bayt (varsayılan değer) boyutunda tanımlar.
  • İkinci ifade, maksimum boyutu 10 olan CHAR veri tipinde 'manager' değişkenini tanımlar ve 6 bayt olan 'guru99' değerini atar. Oracle Bu durumda 6 bayt yerine 10 bayt ayırır.
VARCHAR2 Bu veri türü bir dize saklar, ancak uzunluğu sabit değildir.

  • Tablo sütunları için boyut sınırlaması 1-4000 bayt, değişkenler için ise 1-32767 bayttır.
  • Her değişkenin boyutu, tanımlama aşamasında belirlenir.
  • Oracle Değişken tanımlandıktan sonra bellek tahsis eder, bu nedenle belirtilen boyut yerine saklanan dizenin gerçek uzunluğunu kullanır.
  • Bellek kullanımını optimize etmek için CHAR yerine VARCHAR2 kullanmak her zaman iyidir.
manager VARCHAR2(10) := 'guru99';

Sözdizimi Açıklaması:

  • Bu ifade, maksimum boyutu 10 olan VARCHAR2 veri tipinde 'manager' adlı bir değişken tanımlar ve 6 bayt olan 'guru99' değerini atar. Oracle Burada yalnızca 6 baytlık bellek ayrılıyor.
VARCHAR Bu, VARCHAR2 veri türüyle eş anlamlıdır.

  • Davranışsal değişikliklerden kaçınmak için VARCHAR yerine VARCHAR2 kullanmak her zaman iyi bir uygulamadır.
manager VARCHAR(10) := 'guru99';

Sözdizimi Açıklaması:

  • Bu ifade, VARCHAR veri tipinde ve maksimum boyutu 10 olan 'manager' adlı bir değişken tanımlar ve 6 baytlık 'guru99' değerini atar. Oracle VARCHAR2'ye benzer şekilde yalnızca 6 bayt ayırır.
NCHAR Bu veri türü CHAR ile aynıdır, ancak karakter seti ulusal karakter setidir.

  • Bu karakter seti, NLS_PARAMETERS kullanılarak oturum için tanımlanabilir.
  • Karakter seti UTF16 veya UTF8 olabilir.
  • Boyut sınırlaması 1-2000 bayttır.
native NCHAR(10);

Sözdizimi Açıklaması:

  • Bu ifade, NCHAR veri tipinde ve maksimum 10 boyutunda 'native' adlı bir değişken tanımlar.
  • Uzunluk, karakter kümesinde tanımlanan karakter başına bayt sayısına bağlıdır.
NVARCHAR2 Bu veri türü VARCHAR2 ile aynıdır, ancak karakter seti ulusal karakter setidir.

  • Bu karakter seti, NLS_PARAMETERS kullanılarak oturum için tanımlanabilir.
  • Karakter seti UTF16 veya UTF8 olabilir.
  • Boyut sınırlaması 1-4000 bayttır.
Native_var NVARCHAR2(10):= 'guru99';

Sözdizimi Açıklaması:

  • Bu ifade, NVARCHAR2 veri tipinde ve maksimum 10 boyutunda 'Native_var' değişkenini tanımlar.
UZUN ve UZUN HAM Bu veri türü, en fazla 2 GB boyutunda büyük metin veya ham verileri depolayabilir.

  • Bunlar çoğunlukla veri sözlüğünde kullanılır.
  • LONG, karakter kümesi verilerini saklarken, LONG RAW ise ikili biçimdeki verileri saklar.
  • LONG RAW, medya nesnelerini ve görüntüleri kabul ederken, LONG yalnızca karakter kümesi kullanılarak saklanabilen veriler üzerinde çalışır.
Large_text LONG;
Large_raw LONG RAW;

Sözdizimi Açıklaması:

  • Bu ifade, LONG veri tipinde 'Large_text' ve LONG RAW veri tipinde 'Large_raw' değişkenlerini tanımlar.

Not: LONG veri türünün kullanılması tavsiye edilmemektedir. OracleLOB veri türü tercih edilmelidir.

PL/SQL NUMARASI Veri Türü

Bu veri türü, 38 basamağa kadar hassasiyete sahip sabit veya kayan noktalı sayıları saklar. Yalnızca sayısal veri içeren alanlarla çalışmak için kullanılır. Değişken, hassasiyet ve ondalık basamak bilgileriyle veya bunlar olmadan tanımlanabilir. Değerler atanırken tırnak içine alınması gerekmez.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Sözdizimi Açıklaması:

  • İlk bildirim, toplam hassasiyeti 8 ve 2 ondalık basamağı olan sayı veri tipindeki 'A' değişkenini tanımlar.
  • İkinci kısım, toplam hassasiyeti 8 olan ve ondalık basamak içermeyen, sayı veri türünde 'B' değişkenini tanımlar.
  • Üçüncüsü en genel olanıdır ve hassasiyet veya ondalık basamak sayısı konusunda herhangi bir kısıtlama olmaksızın 'C' sayısal veri türünü tanımlar. 38 basamağa kadar değer alabilir.

PL/SQL BOOLEAN Veri Türü

Bu veri türü mantıksal değerleri saklar. Oracle Mantıksal (Boolean) veri türü, DOĞRU veya YANLIŞ değerlerini temsil eder ve çoğunlukla koşullu ifadelerde kullanılır. Değer atanırken tırnak içine alınması gerekmez.

Var1 BOOLEAN;

Sözdizimi Açıklaması:

  • 'Var1' değişkeni BOOLEAN veri tipinde tanımlanmıştır. Çıktı, belirlenen koşula bağlı olarak doğru veya yanlış olacaktır.

PL/SQL DATE Veri Türü

Bu veri türü, tarih, ay ve yıl formatında değerler saklar. DATE veri türüyle tanımlanan bir değişken, zaman bilgisi de tutabilir; belirtilmediği takdirde varsayılan olarak zaman 12:00:00 olarak ayarlanır. Değerler atanırken tırnak içine alınmalıdır.

Standart Oracle Giriş ve çıkış için zaman formatı 'DD-MON-YY' olup, bu format oturum düzeyinde NLS_PARAMETERS (NLS_DATE_FORMAT) parametresinde ayarlanır.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Sözdizimi Açıklaması:

  • 'newyear' değişkeni DATE veri türünde tanımlanmış ve 1 Ocak 2015 değeri atanmıştır.
  • İkinci bildirim, 'current_date' değişkenini DATE veri türü olarak tanımlar ve geçerli sistem tarihini atar.
  • Her iki değişken de zaman bilgisini içerir.

PL/SQL LOB Veri Türü

Bu veri türü, esas olarak resimler ve multimedya dosyaları gibi büyük, yapılandırılmamış veri bloklarını depolamak ve işlemek için kullanılır. Oracle LOB veri türünü LONG veri türüne tercih eder çünkü daha esnektir. LOB'un LONG'a göre başlıca avantajları şunlardır:

  • Bir tabloda yalnızca bir LONG sütunu bulunabilirken, LOB sütunlarının sayısında herhangi bir kısıtlama yoktur.
  • Veri arayüzü araçları, çoğaltma sırasında LOB sütunlarını kabul eder ancak LONG sütunlarını hariç tutar; bu sütunların manuel olarak çoğaltılması gerekir.
  • Uzun bir sütun 2 GB'a kadar, kısa bir sütun ise 128 TB'a kadar veri depolayabilir.
  • Oracle LOB veri türü her sürümde geliştirilmeye devam ederken, LONG veri türü büyük ölçüde değişmeden kalmıştır.

Bu nedenle, LONG veri tipi yerine her zaman LOB veri tipini kullanmak daha iyidir. Aşağıdaki farklı LOB veri tipleri 128 terabayta kadar veri depolayabilir:

  1. BLOB
  2. CLOB ve NCLOB
  3. BDOSYA
Veri tipi Açıklama Sözdizimi
BLOB Bu veri türü, LOB verilerini en fazla 128 TB'a kadar ikili dosya biçiminde depolar. Karakter kümesi ayrıntılarına dayalı veri depolamaz, bu nedenle multimedya nesneleri ve resimler gibi yapılandırılmamış verileri depolayabilir.
Binary_data BLOB;

Sözdizimi Açıklaması:

  • 'Binary_data' değişkeni BLOB olarak tanımlanmıştır.
CLOB ve NCLOB CLOB, LOB verilerini karakter kümesinde saklarken, NCLOB verileri yerel karakter kümesinde saklar. Bu depolama biçimleri karakter kümesi tabanlı depolama kullandıkları için multimedya veya resim gibi verileri saklayamazlar. Maksimum boyut 128 TB'dir.
Charac_data CLOB;

Sözdizimi Açıklaması:

  • 'Charac_data' değişkeni CLOB veri türünde tanımlanmıştır.
BDOSYA
  • BFILE, yapılandırılmamış ikili verileri veritabanının dışında, işletim sistemi dosyası olarak depolar.
  • BFILE dosyalarının boyutu işletim sistemiyle sınırlıdır ve dosyalar salt okunurdur, değiştirilemezler.

SSS

CHAR sabit uzunluktadır ve belirtilen boyuta kadar boşluklarla doldurulur, bu da kısa değerlerde yer israfına neden olur. VARCHAR2 değişken uzunluktadır ve yalnızca gerçek karakterleri saklar, bu nedenle çoğu dize sütunu için tercih edilir.

LOB, tablo başına birçok sütuna izin verir, 128 TB'a kadar veri depolayabilir ve her sürümde geliştirilmeye devam eder. LONG ise tek sütunla sınırlıdır, 2 GB ile sınırlıdır ve esas olarak geriye dönük uyumluluk için korunmuştur.

Eski sürümlerde durum böyle değildi. BOOLEAN yalnızca PL/SQL'e özgü bir türdü, bu nedenle tablo sütunları bunun yerine NUMBER veya CHAR bayrağı kullanıyordu. Koşullu mantık için doğrudan blokların içinde kullanılır.

Evet. Yapay zeka, örnek değerleri uzunluk, aralık ve biçim açısından profilleyerek VARCHAR2, NUMBER, DATE veya LOB önerebilir ve çok büyük olan sütunları işaretleyebilir. Seçimi gelecekteki verilerle doğrulayın.

Evet. DATE değişkeni yüzyılı, yılı, ayı, günü, saati, dakikayı ve saniyeyi saklar. Saat belirtilmezse, varsayılan olarak gece yarısını kullanır. Kesirli saniyeler veya saat dilimleri için bunun yerine TIMESTAMP değişkenini kullanın.

Bu yazıyı şu şekilde özetleyin: