25 Nisan 2013 Perşembe

PL/SQL YAPISI ve PROCEDURE

Merhaba,
Bir sunum hazırlarken yapılanları buraya da eklemek iyi olur. Yoksa bu gidişle hiçbirşey eklemeden duracak bu blog :) Sırayı geçtim artık ne yaparsak o :))
Neyse gelelim bugün yaptıklarımıza ve tanımlara;

PL/SQL nedir :
SQL dilinin daha da gelişmiş halidir. Bünyesinde SQL cümlelerinin, döngülerin, kontrol ifadelerinin, ve diğer yapıların kullanıldığı blok yapısında olan bir dildir. Fonksiyon, prosedür, trigger tanımlamaları gibi bir çok özelliğiyle uygulamalarda kullanabileceğimiz bir yapısı vardır.


Temel bir PL-SQL yapısı:

IS
Burada değişkenler, tipler, diğer tanımlamalar yapılır

BEGIN
Asıl işin yapıldığı kısımdır. Kontrol yapıları, SQL cümleleri, döngüler...

EXCEPTION 
İşleyiş anında oluşan hataların yakalandığı yerdir. İsteğe bağlıdır

END;
İşlemin bitirilmesidir 

PL/SQL 'de bir procedure örneği (Bu benim kurstan kalan bir örneği tekrar yapışım:) en akılda kalıcı örnek benim için buydu )
İki tane bir biri ile ilişkili tablo oluşturmuş olalım.
Ve biz kursiyer tablosuna bu şekilde veri eklemiş olalım.

       Taksit tablosuna bir taksilendirmeyi eklemek istiyorum .Karşımda  kursiyer ile ilişkili bir tablo bunu yapmanın en güzel yolu SP olacaktır.

      1. Stored Procedure Oluştururken öncelikle CREATE PROCEDURE deyimi kullanılır. Ve ardından Procedure için bir isim tanımlanır. Parantez açılır ve ilgili parametreler tanımlanır. Sonra Parantez kapatılır ve IS deyiminden sonra eğer hesaplamam gereken değerler varsa onlar tanımlanır.

CREATE  PROCEDURE  taksitlendir (KURSIYER_REFNO INT ,TAKSIT_ADET INT ,TUTAR FLOAT ,ILK_TARIH DATE ,VADE_GUN INT )
IS
TAKSIT_TUTAR FLOAT;
BAS_TARIH DATE;
TAKSIT_NO INT:=0;

2.  IS ile hesaplanması gereken parametreler tanımlanırsa. Hesaplamaya başlamayı BEGIN             ile yapıyoruz. Ben burada hesaplama diyorum ancak yapılması gereken işlem demek daha uygun olur. Eğer herhangi bir şartla değişecek parametremiz varsa o da WHILE (-olduğu sürece) LOOP(döngümüz) ile ifade edilir.

BEGIN

TAKSIT_TUTAR:=TUTAR/TAKSIT_ADET;
BAS_TARIH:=ILK_TARIH;

WHILE (TAKSIT_NO<TAKSIT_ADET)
LOOP
  TAKSIT_NO:=TAKSIT_NO+1;


3. WHILE koşulundan sonra( ki eğer bir koşulumuz varsa uyguluyoruz) SQL sorgumuzu yazabiliriz. Biz burada taksit tablosuna uygun koşullar sağlanırsa veriyi eklemeyi yaptık. Daha sonra da LOOP döngüsünü END ile sonlandırdık


INSERT INTO TAKSIT(TAKSIT_REFNO,KURSIYER_REFNO,TAKSIT_NO,TARIH,BORC,ODENEN)
  VALUES(SQ_TAKSIT.NEXTVAL,KURSIYER_REFNO,TAKSIT_NO,BAS_TARIH,TAKSIT_TUTAR,0);
  BAS_TARIH:=BAS_TARIH+VADE_GUN;
END LOOP;
END;
Ve yukarıdaki ekran görüntümüzdeki gibi çalıştırdığımızda
Taksit tablosuna istediğimiz işlemler sonucu 21 referans numaralı kursiyerin bilgilerinin eklendiğini görebiliriz.

:) Şimdilik bu kadar olsun geniş anlatımları geniş zamanlara bırakalım. 



Hiç yorum yok:

Yorum Gönder