Hurriyet

18 Şubat 2014 Salı

PL/SQL: Parametre Modları - Parameter Modes

PL/SQL prosedürlerinde veya programlarında parametreler 3 tipte olabilirler. Bunlar

1-IN
2-OUT
3-IN OUT

IN: parametre tipi programımıza bir değer göndermektedir. Standart parametre modudur.. Parametre tipi herhangi bir ifade, değer veya sabit olabilir.

OUT: parametre tipi programımızdan bir değeri ortama geri döndürmektedir.  Özellikle belirtilmesi gerekir. Bir değişken olmalıdır.

IN OUT: parametre tipi programa bir değer gönderirken bu değerin değiştirilme ihtimali ve geri döndürülme ihtimali bulunur.  Özellikle belirtilmesi gerekir. Bir değişken tipinde olmalıdır.

Prosedürler çağırılırken içerisindeki değerler direk in tipi parametre olarak kabul edilirler. Eğer prosedürümüzün bir değer döndüreceğini belirtmek istiyorsak özellikle out veya in out diye belirtmemiz gerekir.

Standart bir PL/SQL blok örneği:

 create or replace procedure (id int,x number)  
 begin  
 ......  
 end;  
 / 

Yukarıdaki örneğimizde de görüldüğü gibi id ve x parametreleri direk olarak in tipi parametre modunda yaratılır. Özellikle belirtmemiz gerekmez.

Basit Örnek:

 create or replace procedure deneme( x int, y int)  
 is  
   
 begin  
 dbms_output.put_line(sysdate);  
 end;  
 /  
   
 execute deneme(5,10); 

Yukarıdaki örnekte parametrelerimizi verdikten sonra prosedürümüzün çalıştırılmasını gösterdik. Sonuçlarını Toad kullanıyorsak eğer DBMS OUTPUT tabından görebiliriz.


OUT Parametre Tipinin Kullanımına Örnek:

 create or replace procedure deneme( x int, y int,z out int)  
 is  
 begin  
 z:=x*y;  
 end;  
 /  

Yukarıdaki örneğimizde bir parametre tipimizin değerini out olarak belirlemiş durumdayız. Bu prosedürümüzde sadece verilen ilk 2 değeri çarpıp  z değişkenine eşitliyoruz. Sonrasında bu prosedürümüzü çalıştıran programımızı yazıyoruz.

 declare   
 a int;  
 begin  
 deneme(5,10,a);  
  dbms_output.put_line(a);  
  end;/

Bu programımızda ise yukarıda yazdğımız prosedür çağrılmaktadır. İlk 2 değer sabit olarak verilmiş olup, 3. değer değişken olarak verilmiştir. O değişkene ilk 2 değerin çarpımı atandıktan sonrada bu değer dbms_output.put_line ile yazdırılmıştır.

IN OUT Parametre Tipinin Kullanımına Örnek:

 create or replace procedure deneme( x int, y int,z in out int)  
 is  
 begin  
 z:=(x*y)+z;  
 end; 

Bu prosedürümüzde de z değişkenimizi in out olarak belirtmekteyiz. Bu şekilde prosedürümüzün içerisine belirli bir değer koyup bu değeri program içinde değiştirip geri alabiliriz.

 declare   
 a int ;  
 begin  
 a:=5;  
 deneme(5,10,a);  
  dbms_output.put_line(a);  
  end;/  

Bu programımızda da prosedürümüzün içine gönderdiği a değişkenin değeri 5 iken , program içerisinde bunu a=5*10+5 olarak görürüz."a"'nını değeri artık 55'tir. Bu şekilde de görmüş olduğumuzu üzere parametremizin değerini içeride değiştirip almış olduk.

SQL*Plus'ta Değişken Tanımlamak:

Yukarıdaki gibi eğer program yazmıyıp, sadece prosedürümüzü execute edip sonuçlarını görmek istersek aşağıdaki gibi değişken tanımlayabiliriz.

 create or replace procedure deneme( x out int)  
 is  
 begin  
 x:=5;  
   
 end;  
 /  

Prosedürümüzü yukarıdaki gibi tanımladıktan sonra değişkenimizi "VARIABLE" ifadesiyle tanımlayıp "PRINT" ifadesiyle sonucunu görebiliriz.

 variable a number  
  execute deneme(:a);  
  print a; 

Prosedürlerin İçerisindeki Değerleri Direkt Olarak Göndermek:

 create or replace procedure deneme( x int, y int)  
 is  
   
 begin  
 dbms_output.put_line(x*y);  
 end;  
 /  
   
 execute deneme(5,10); 

Yukarıdaki örneğimizi düşündüğümüzde "Execute deneme(5,10)"  dediğimizde, 5 sayısı x'e atanırken, y sayısına 10 değeri atanmaktadır. Eğer biz bunu değiştirmek istersek "execute deneme(y=>5,x=>10) şeklinde bir değer atama işlemi yapabiliriz.

Hiç yorum yok:

Yorum Gönder