FOR LOOP PL SQL ORACLE FOR DÖNGÜ

Bir çok programlama dilinde olduğu gibi Oracle’ın PL SQL dilinde de for döngüsü (loop) bulunmaktadır. Örnek for kullanımı:

12’den başlayarak 22 ye kadar tüm değerleri döndüren örnek PL SQL kodu aşağıdaki gibidir:

DECLARE
       deger number;
BEGIN
  FOR deger in 10 .. 22 
  LOOP       
       dbms_output.put_line('değer: ' || deger);
  END LOOP;
END;

dbms_output.put_line() fonksiyonu ile deger isimli değişkenin değeri output ekranına yazılmaktadır.

pl sql for loop oracle

pl sql for loop

Belirli rakam aralığında for döngüsü yukarıdaki gibi yapılmıştır.

GET_TIME KULLANIMI PL SQL PERFORMANS ÖLÇME

Oracle veritabanı üzerinde çalıştırdığımız sorguların ne kadar sürede çalıştığını saniyenin 100’de 1’i hassasiyetinde görmek için DBMS_UTILITY.GET_TIME fonksiyonunun kullanımını göstereceğim. DBMS_UTILITY.GET_TIME Ne Zaman Kullanılır ? Genelde kod blokları içerisinde birden fazla sql çalışıyorsa, hangisinin ne kadar süre çalıştığını bulmak için kullanılır. Veya aynı anda birden fazla iş yapan bir loop’un içerisindeki işlerin ne kadar süre çalıştığını görebilirsiniz. DBMS_UTILITY.GET_TIME Nasıl Kullanılır ? Başlangıç ve bitiş değerlerini tutacağımız birer değişken tanımlanır. Ben test amacıyla v_adet isimli değişkeni de oluşturdum. Örnek göstermek dba_tables’taki sütun sayısını bulup bu değişkene atayacağım. dbms_utility.get_time fonksiyonunu her çağırdığımda bir değer döner. Bu sebeple çalışma süresini ölçeceğim sql & pl sql’in başında ve sonunda GET_TIME fonksiyonunu çağırarak başlangıç ve bitiş zamanlarını ilgili değişkenlere atarım. Başlangıç değerini bitiş değerinden çıkarttığım zaman aradaki fark bana sql’in çalışma süresini verecektir. Bu değeri görebilmek için dbms_output.put_line fonksiyonunu kullanarak Console(output) ekranına ilgli değeri yazdırdım. Ekranda yazan değer saniyenin 100’de biri cinsindendir. Bu değeri 100’e bölerseniz saniye cinsinsen sql’in çalışma süresini bulursunuz.

Continue reading

NVL FONKSIYONU KULLANIMI – NULL KAYITLARI DEĞİŞTİRME

NVL Fonksiyonu Nedir ? NVL Fonksiyonu Nasıl Kullanılır ?

Sorgu sonucunda null gelen kayıtları istediğiniz bir değere dönüştürülebilirsiniz. Örneğin null matematiksel işleme girdiğinde sonucu null yaptığı için, null kayıtları istediğiniz 0’a çevirmemiz gerekebilir. Veya NULL gelen kayıtların bulunduğu yere ‘Belirsiz’ gibi bir ifade girmek gerekebilir. Bu ve benzeri durumlar için en kolay yöntem NVL fonksiyonunu kullanmaktır. (diğer yöntemler: case when, decode, nvl2 v.s.)

SELECT NVL(null,0) FROM DUAL; — sorgu sonucu 0 olacaktır.

Continue reading

CTAS NEDİR? Create Table AS

CTAS Nedir ? CTAS nasıl kullanılır?

CTAS ; Create Table AS yapısının kısaltılmış halidir. Kolay yoldan tablo oluşturmaya yarar. Genelde tablonun yedeğini almak için veya create script’inin kolayca oluşturulması için kullanılır.

CTAS yöntemi ile tablo oluşturulduğunda, partition, index, grant gibi objeler oluşmaz.

Örnek kullanım :

CREATE TABLE ornek_tablo AS
SELECT * FROM hr.EMPLOYEES;

Continue reading

ORACLE PL SQL – AY SONLARININ LİSTELENMESİ

Bu başlık altında Oracle’da pl-sql kullanarak verilen tarihler arasındaki ay sonlarının listesini aşağıdaki sorgu ile elde edebilirsiniz. Aşağıdaki kod 2014 başından 2016 yılı arasındaki ay sonlarının listesini vermektedir.

SELECT TO_CHAR(tum_gunler,'dd.mm.yyyy') AS ay_sonlari
  FROM (SELECT to_date('01.01.2014','dd.mm.yyyy') + LEVEL as tum_gunler
          FROM dual
       CONNECT BY LEVEL <= to_date('01.01.2016','dd.mm.yyyy')-to_date('01.01.2014','dd.mm.yyyy')
       )
WHERE tum_gunler = last_day(tum_gunler)
Continue reading

TWO PHASE COMMIT NEDİR?

Two phase commit nedir ? Two phase commit ne işe yarar ?

Two phase commit dağıtık (distributed) sistemler üzerinde gerçekleşen transaction’ların her sunucuda/kaynakta/sistemde başarıyla tamamlanıp tamamlanmadığı bilgisini verir. Örneğin A, B ve C sunucularımız olsun. Veriler üzerinde değişiklik gerektiren (update, delete…) bir transaction çalıştırıldığında, A, B ve C sunucuları bu transaction’ı başarılı bir şekilde tamamlamışlarsa, A,B ve C sunucularında commit uygulanır.

Continue reading

ORA-02449: unique/primary keys in table referenced by foreign keys (hatası ve çözümü)

ORA-02449: unique/primary keys in table referenced by foreign keys

ORA-02449 hatasının sebebi; silmeye çalıştığınız tabloya referansı olan başka tablolar mevcut olmasıdır. Örneğin departman tablosunu silmeye çalışıyorsunuz, ama personel tablosunda departman ID ler bulunmakta ve bununla ilgili constraint tanımlı. Yani ana tabloya bağlı, child kayıtlar mevcut. Ve bu child kayıtlarla olan ilişki constraint lerle tanımlanır.

ORA-02449 Çözüm:

Continue reading

SQL WITH KULLANIMI (WITH USAGE IN SQL)

WITH kullanımının mantığı; iç içe sorgularda, aynı sorgunun tekrar tekrar yazılmasını ortadan kaldırmaktır.  WITH ile oluşturduğumuz tablo, localde tutulmaktadır, data dictionary’de tutulmamaktadır (procedure,function data dictionary’de tutulur.) Basti bir örnekle açıklamak gerekirse.
NOT: Örneği HR şeması üzerinden gösteriyor olacağım. HR schemasını(şemasını) nasıl kurarım, buraya tıklayınız.

Continue reading

SQL – NULL KULLANIMI (NULL İLE EŞİTTİR İŞARETİ KULLANILMAZ)

NULL, SQL dilinde bilinmeyen/belirsiz anlamındadır. Bu sebeple NULL değerini = (eşittir) veya <> (eşit değildir) sembolü ile kullanamayız. Bunun yerine IS veya IS NOT keyword’lerini kullanırız. Bir kaç basit örnekte konuyu daha iyi anlayacaksınız.

SELECT * FROM dual WHERE 1=1;

Sonuç:   x

SELECT * FROM dual WHERE null=null;

Sonuç:   no rows selected. Yani hiç bir değer dönmez. Çünkü bilinmeyen=bilinmeyen gibi bir karşılaştır yaptık az önce ve bu sebeple bir sonuç dönmedi. Onun yerine IS kullansaydık sonuç dönecekti.

Continue reading