Kayıtlar

Mart, 2017 tarihine ait yayınlar gösteriliyor

PL/SQL Ders16 - Trigger

Resim
Trigger aha önce belirtilmiş bir olay meydana geldiğinde tetiklenen birimdir. Trigger veritabanında saklanır ve belirtilmiş bir koşul meydana geldiğinde tetiklenir.
Trigger aşağıdaki olaylar meydana geldiğinde tetiklenebilir.
Veritabanı manipulation (DML) : DELETE, INSERT, UPDATE.Veritabanı definiyion (DDL) : CREATE, ALTER, DROP.Veritabanı operation : SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN.CREATEORREPLACETRIGGER triggerIsmi; BEFORE, AFTER veya INSTEADOFINSERT, UPDATE veya DELETEOF kolonIsmi ON tabloIsmi FOREACHROWWHEN kosul DECLARE..BEGIN..END;
CREATE OR RAPLACE : trigger tanımlamayı veya varolan bir triggerı güncellemeyi sağlar. BEFORE, AFTER veya INSTEAD OF : Trigggerın ne zaman çalıştırılacağını belirtir.
INSERT, UPDATE veya DELETE : DML operasyonları OF : Güncellenecek kolon ismini belirtir. ON : Güncellenecek tabloyu belirtir. OLD AS, NEW AS : Çeşitli DML ifadeleri için yeni ve eski değerleri atamanızı sağlar. FOR EACH ROW : Her satır için etkili olacağını belirtir. WHEN : koş…

PL/SQL Ders15 - Exception

Resim
PL/SQL'de 2 tip exception (istisna) vardır. Bunlar
Sistem tabanlı exceptionKullanıcı tabanlı exceptionDECLARE....BEGIN....EXCEPTION WHEN ..... THEN .......... WHEN ..... THEN ..........END;


Worksheet15.sql
DECLARE p_id test_personel.id%TYPE; BEGINSELECT id INTO p_id FROM test_personel WHERE ad = 'enes22'; DBMS_OUTPUT.put_line (p_id); EXCEPTIONWHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line ('veri bulunamadi..'); WHEN OTHERS THEN DBMS_OUTPUT.put_line ('bir hata var..'); END;


Raising Exceptions (Kullanıcı Tabanlı)

Istisnalar veri tabanında dahili bir hata meydana geldiğinde otomatik olarak oluşturulur. Fakat programcı tarafından RAISE komutuyla da explicit (açık) bir şekilde istisna tanımlanabilir.

Bir istisna tanımlamasını ve o istisnanın meydana gelmesi durumda yapılacakları gösteren genel kod bloğu aşğıdaki gibidir.


DECLARE istisnaIsmi EXCEPTION; BEGINIF kosul THENRAISE istisnaIsmi; ENDIF; EXC…

PL/SQL Ders14 - Cursor

Resim
SQL ifadesi işlendiğinde Oraclecontext area denilen bir bellek bölgesi oluşturur. Bir cursor işte bu bellek bölgesine işaret eder. Cursor ifadenin işlenmesi için gerekli tüm bilgileri içerir. PL/SQL'de context area, cursor tarafından kontrol edilir. Cursor veri satırlarını ve select ifadeleri üzerindeki bilgileri içerir.

Bir cursor SQL ifadeleri ile döndürülen saturları işlemek , fetch etmek (getirmek) için kullanılır.
İki tip cursor vardır.
Implicit Cursor (örtülü)Explicit Cursor (açık)Implicit Cursor (örtülü)


Implicit Cursor (örtülü) Oracle tarafından  SQL ifade çalıştırıldığında eğer explicit cursor (açık) kullanılmıyorsa otomatik olarak oluşturulur.

INSERT, UPDATE, DELETE gibi DML ifadeleri çalıştırıldığında Oracle tarafından oluşturulan attributeler şunlardır. %FOUND : Eğer DML ifadelerinden oluşturulan komutlardan etkilenen bir satır varsa veya select ifadelerinden oluşturulan komutlardan geriye dönen en az bir satır varsa geriye true döndürür. Yoksa false döndürür.%NOTFO…

PL/SQL Ders13 - Function

Resim
PL/SQL'de fonksiyonlar (function) prosedürlere (procedure) çok benzemektedir. Fonksiyonlar da bir veya daha fazla görevi icra edecek yapılar olarak tanımlanabilir.

Fonksiyonlar ile prosedürler arasındaki fark ise fonksiyonlar her zaman geriye bir değer döndürmek zorundadır. Prosedürlerde ise bu zorunluluk yoktur.

Function oluşturma


CREATE FUNCTION "functionIsmi" (varsa parametreler,..)
RETURN donusTipi;
IS
declaration kısmı
BEGIN
execution kısmı
RETURN deger;
END;


CREATE yerine REPLACE anahtar kelimesi ile var olan bir function güncellenebilir.

Function silme

DROP FUNCTIONprocedureIsmi;

Function13.sql
CREATEORREPLACEFUNCTION dortgen (satir IN INT, sutun IN INT) RETURN INT IS yildizSayisi INT; BEGINFOR i IN1.. satir LOOPFOR j IN1.. sutun LOOP dbms_output.put('*'); ENDLOOP; dbms_output.put(' '||chr(10)); ENDLOOP; yildizSayisi := satir * sutun; RETURN yildizSayisi; END; /
Worksheet13.sql
DECLARE yildiz int; BEGIN …

PL/SQL Ders12 - Procedure

Resim
PL/SQL'de bir veya daha fazla görevi icra edecek yapılara procedure denir.
Procedure header ve body olmak üzere iki kısımdan meydana gelir.
Header kısmında procedure ismi, procedure parametreleri bulunur.Body kısmında genel PL/SQL bloklarına benzer olarak declaratin kısmı, execution kısmı ve exception handling kısmı bulunur. Yani yapılacak iş burada belirtilir. Bir procedure oluşturmak isterseniz bu procedure geçirilecek parametreleri tanımlamak zorundasınızdır. Bir procedurede 3 tip parametre bulunur. IN parametreleri procedure tarafından işleme sokulacak parametrelerdir. Procedure dışında kullanılamaz.OUT parametreleri  procedure tarafından işlem sonucundan elde edilecek parametrelerdir. Procedure dışında kullanılabilir.INOUT parametreleri procedure tarafından işleme sokulup değeri değişebilecek parametrelerdir. Procedure dışında kullanılabilir. Procedure oluşturma

CREATE PROCEDURE "procedureIsmi" (varsa parametreler,..)
IS
declaration kısmı
BEGIN
execution kısmı
END;


CR…

PL/SQL Ders11 - GOTO Deyimi

Resim
PL/SQL'de GOTO deyimi kod satırları arasında atlama yapmak için kullanılır. GOTO deyimi ile daha önce tanımlanan LABEL'e atlanır.


... << a >>
...
GOTO a;
...


GOTO Deyiminin Kısıtlamaları

GOTO deyimiyle bir IF koşulunun, CASE durumunun, LOOP ifadelerinin veya alt blokların içine atlayamazsınız.GOTO deyimiyle bir IF  koşulunun içinden diğer bir IF  koşulunun içine atlayamazsınız. Aynı koşul CASE durumunda WHEN'ler arasında da yapılamaz.GOTO deyimiyle bir dış bloktan iç bloka atlayamazsınız.GOTO deyimiyle bir alt programdan çıkmak için atlama yapılamaz.GOTO deyimiyle exception handler içine atlayamazsınız. Worksheet11.sql DECLARE i INT := 0; BEGIN <<test>> WHILE i < 100LOOP i := i + 10; IF i = 80THEN GOTO test; ENDIF; DBMS_OUTPUT.put_line (i); ENDLOOP; END;

PL/SQL Ders10 - CONTINUE Deyimi

Resim
PL/SQL'de CONTINUE ifadesi bir döngü içerisinde kullanılır. Döngü içerisinde kullanılan CONTINUE ifadesi CONTINUE'nun altında kalan satırlar icra edilmeden bir sonraki iterasyona geçilmesini sağlar.


... CONTINUE;
...


   Örneğin aşağıdaki programdaki döngü 1'den 10'a kadar yazdıracak şekilde ayarlanmıştır. Fakat 7 sayısı yazdırılacakken CONTINUE deyimiyle 7 yazdırılmadan diğer iterasyona geçilmesi sağlanmıştır. Ayrıca 3 ile 5 arasındaki sayılar ikinci IF koşulu ile ikişer kez yazdırılacaktır.


Worksheet10.sql
DECLAREBEGINFOR i IN1..10LOOPIF i=7THENcontinue; ELSIF i BETWEEN3AND5THEN dbms_output.put_line(i||' '|| i); ELSE dbms_output.put_line(i); ENDIF; ENDLOOP; END;


PL/SQL Ders09 - Döngüler | FOR

Resim
PL/SQL'de FOR döngüsü şu şekilde tanımlanır.


FOR değişken IN başlangıçDegeri .. bitişDegeri LOOP
koşul doğru olduğu sürece çalışacak ifadeler
END LOOP;



Worksheet09.sql
DECLAREBEGINFOR a in1..10LOOP dbms_output.put_line(a); ENDLOOP; END;


PL/SQL Ders08 - Döngüler | WHILE

Resim
PL/SQL'de WHILE döngüsü şu şekilde tanımlanır.


WHILE koşul LOOP
koşul doğru olduğu sürece çalışacak ifadeler
END LOOP;


Worksheet08.sql
DECLARE a int:=1; BEGINWHILE a<=10LOOP dbms_output.put_line(a); a:=a+1; ENDLOOP ; END;

PL/SQL Ders07 - Döngüler | EXIT

Resim
PL/SQL'de bir ifadenin bir veya birden fazla olarak çalışması döngülerle sağlanır. PL/SQL'de yer alan döngüler 3 tanedir. Bunlar ;
EXITWHILEFOR Bu derste EXIT dongusunu işleyeceğiz. EXIT döngüsünün söz dizimi aşağıdaki gibidir.


LOOP
EXIT koşul
koşul yanlış olduğu sürece çalışacak ifadeler
END LOOP;


Bir örnek program yapalım.

Worksheet07.sql
DECLARE i int :=1; BEGINLOOPEXITWHEN i>10; dbms_output.put_line(i); i:=i+1; ENDLOOP; END;

PL/SQL Ders06 - Kontrol İfadeleri | CASE

Resim
Case ifadesi If ifadesine benzer şekilde çalışır. İkisi de belli bir koşula göre bir komutun çalışıp çalışmayacağını belirler.

Aşağıda Case kontrol ifadesinin genel yapısı gösterilmiştir.


CASE ifade
WHEN koşul1 THEN sonuc1;
WHEN koşul2 THEN sonuc2;
....
WHEN koşuln THEN sonucn;
ELSE sonuc;
END;


Worksheet6.sql
DECLARE a int:=3; BEGINCASE a WHEN1THEN dbms_output.put_line('a 1dir.'); WHEN2THEN dbms_output.put_line('a 2dir.'); WHEN3THEN dbms_output.put_line('a 3tür.'); ELSE dbms_output.put_line('a 1,2,3 sayilarindan biri degildir.'); ENDCASE; END;

PL/SQL Ders05 - Kontrol İfadeleri | IF

Resim
Bir komutun çalışıp çalışmayacağı IF kontrol ifadesiyle belirlenebilir.

PL/SQL'de bir IF kontrol ifadesi aşağıdaki şekillerde oluşturulabilir.


IF koşul
THEN
    koşul doğru olduğunda çalışacaklar
END IF;



IF koşul
THEN 
    koşul doğru olduğunda çalışacaklar
ELSE
    koşul yanlış olduğunda çalışacaklar
END IF;



IF koşul1  THEN 
    koşul2 doğru olduğunda çalışacaklar
ELSIF koşul2
THEN
    koşul1 yanlış olup, koşul2 doğru olduğunda çalışacaklar
END IF;



IF koşul1  THEN 
    koşul2 doğru olduğunda çalışacaklar
ELSIF koşul2
THEN
    koşul1 yanlış olup, koşul2 doğru olduğunda çalışacaklar
ELSE 
    koşul1 ve koşul2 yanlış olduğunda çalışacaklar
END IF;


Bunun ile ilgili basit bir örnek aşağıda verilmiştir.

Worksheet05.sql
DECLARE a int:=22; BEGINIF(a<10) THEN dbms_output.put_line('a 10dan kucuktur.'); ELSIF(a<20) THEN dbms_output.put_line('a 20den kucuktur.'); ELSE dbms_output.put_line('a 20den kucuk degildir.'); ENDIF; dbms_output.put_line('a &…

PL/SQL Ders04 - Sabitler

Resim
PL/SQL'de sabit (constant) değişkenler tanımlayıp bunları program boyunca değerinin değiştirilmesine izin verilmeden kullanabiliriz.

Bir sabit aşağıdaki biçimde tanımlanır.


degiskenIsmi CONSTANT veriTipi := deger;

Örnek bir program aşağıda verilmiştir.

Worksheet04.sql
DECLARE pi CONSTANT NUMBER (5, 4) := 3.1415; yaricap NUMBER (5) := 5; yay NUMBER (6, 3); cevre NUMBER (6, 3); alan NUMBER (6, 3); BEGIN yay := 2 * pi; cevre := 2 * pi * yaricap; alan := pi * yaricap * yaricap; dbms_output.put_line ( 'PI : '|| pi|| CHR (10) || 'YARICAP : '|| yaricap|| CHR (10) || 'YAY : '|| yay|| CHR (10) || 'CEVRE : '|| cevre|| CHR (10) || 'ALAN : '|| alan|| CHR (10)); END;

PL/SQL Ders03 - Değişkenler

Resim
PL/SQL'de yer alan temel değişken tipleri aşağıda listelenmiştir. Bir de bu değişken tiplerinin alt tipleri mevcuttur. Örneğin integer veri tipi number veri tipinin alt tipidir. Aynı şekilde string veri tipi varchar veri tipinin alt tipidir.
Number (n,m)Char (n)Varchar2 (n)DateLongLong rawRawBlobClobNclobBfile Bir değişkenin tanımlanması aşağıdaki biçimde olur.


degiskenIsmi veriTipi NOT NULL := deger;


Ayrıca null olması zorunlu değildir. Null olabilen değişkenler tanımlanabilir..

degiskenIsmi veriTipi := deger;


Bir değişkene yukarıdaki gibi ilk değer verileceği gibi şu şekilde de başlangıç değeri verilebilir.


degiskenIsmi veriTipi DEFAULT deger;

Değer kısmı opsiyoneldir. Default değer verilmeyebilir.

degiskenIsmi veriTipi;


Örneğin, maas adında number tipinde 6 haneli bir değişken tanımlamak istersek şöyle yapabiliriz.

DECLARE
maas number(6);
....


Çıktı Üretimi

PL/SQL'de çıktı üretümi aşağıdaki ifade ile yapılır.

dbms_output.put_line(maas);


Değişkene Değer Atama

Değişken…

PL/SQL Ders02 - PL/SQL'in Avantajları

PL/SQL'in avantajları aşağıda listelenmiştir.
Blok YapısıProsedürel Dil YetenekleriDaha İyi PerformansHata İşlemeBlok Yapısı PL/SQLkod bloklarından meydana gelir. Bu kod blokları kendi için yuvalanmış (nested) olabilir.
Her blok belli bir görevi icra etmek veya mantıksal modülü gerçekleştirmek amaçlıdır.
Prosedürel Dil Yetenekleri PL/SQL prosedürel dil yapılarından meydana gelir. Örneğin, for döngüsü.
Daha İyi Performans PL/SQL çoklu SQL komutlarını aynı anda tek bir blok olarak işler ve böylece ağ trafiğini azaltır.
Hata İşleme PL/SQL programdaki hataları etkin bir biçimde işler. Bir istisna yakaladığında istisnanın türüne göre belirli eylemler yapabilir veya kullanıcıya bir mesaj gösterebilir.


PL/SQL Ders01 - PL/SQL'e Giriş

Resim
PL/SQL'in açılımı Procedurel Language / Structed Query Language'tir. Yani Türkçe olarak yapılandırılmış sorgu dilinin (sql) prosedürel uzantısı diyebiliriz.

PL/SQL, Oracle tarafından geliştirilmiştir. PL/SQL kodları client-side veya server-sideda saklanabilir.

Her PL/SQL programı PL/SQL bloklarından meydana gelir. Bu bloklar 3 kısıma ayrılır.
Declaration Kısmı (Opsiyoneldir.)Execution Kısmı (Zorunludur.)Exception Handling Kısmı (Opsiyoneldir.)Declaration Kısmı (Opsiyonel) Bu kısım "DECLARE" anahtar kelimesi ile başlar. Programda declaration kısmının kullanılma zorunluluğu yoktur yani opsiyoneldir. Declaration kısmında değişkenler, sabitler, cursorlar ve recordlar bulunur.
Execution Kısmı (Zorunlu)
 Bu kısın "BEGIN" anahtar kelimesi ile başlar ve "END" anahtar kelimesi ile biter. Execution kısmı belli bir görevin gerçekleştirildiği kısımdır.

Exception Handling Kısmı (Opsiyonel)
Bu kısım "EXCEPTION" anahtar kelimesi ile başlar. Programda …

Spring Ders21 - Aspect Oriented Programming - AspectJ Xml Configuration Style

Resim
Spring'de Aspect Oriented Programmingi  .xml configuration (yapılandırma) dosyasında yapabilirsiniz. Bu  AspectJ Xml Configuration Style olarak adlandırılır.

AspectJ anotasyon stilindeki tüm advicelar burada da desteklenir.
aop:before  :  Before advice tanımlar. Metot çağrılmadan önce çalışır.aop:after     :  After advice tanımlar. Metot çağrıldıktan sonra çalışır.aop:after-returning  :  AfterReturning advice tanımlar. Metot return ettikten sonra çalışır.aop:around  :  Around advice tanımlar. Metot çağrılmadan önce ve sonra çalışır.aop:after-throwing  :  AfterThrowing advice tanımlar. Metot istisna (exception) attıktan sonra çalışır.aop:before

Before advice tanımlar. Metot çağrılmadan önce çalışır.
Main.java
package test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; publicclass Main { publicstaticvoid main(String[] args) throws Exception { ApplicationContext context = new ClassPathXmlAppl…