Hurriyet

8 Ekim 2013 Salı

PL\SQL Örnekleri

Burada bana gelen bazı isteklere göre pl\sql örnekleri koyacağım.

1- PL\SQL'de tabloya veri yazdırma:

Bu örneğim için ilk olarak bir deneme tablosu yarattım.

create table scott.deneme as select * from dual;  

Sonrasında hemen tablo içerisinde var olan bilgiyi  tabloya tekrar koyan bir pl\sql kodu yazdım.


 declare
 x varchar2(10);  
   
 begin  
   
 select * into x from dual;  
 dbms_output.put_line(x);   
 insert into scott.deneme values(x);  
 end;    

Burada bir değişken yaratıp o değişkene tablomuz içindeki tek değer olan dummy tablosundaki x değerini "X" parametresine atıp o "X" parametresini de tablomun içine attım.

Sonuçları görmek için "commit" lemeyi unutmayın. Gözden kaçabilir. Insert yaptığınız için hemen sonuçlar kaydedilmemektedir.


2- PL\SQL'de bir tablodan gelen her sonucu işleyip ona göre başka bir tabloya yazmak, girmek.
Aynı zamanda  "CURSOR FOR LOOP" örneği olarak da kullanılabilinir.

Önce geçen örnekte olduğu gib tekrar bir tablo yaratırız.

create table scott.deneme1 as select * from scott.emp;

Sonra procedure'umuz yazarız.

 declare  
   
 y SCOTT.EMP%ROWTYPE;  
  cursor z is select * from scott.emp;  
 begin  
   
 for a in z   
 loop  
   
 dbms_output.put_line(a.ename);   
 insert into scott.deneme1 values(a.empno,a.ename,a.job,a.mgr,a.hiredate,a.sal,a.comm,a.deptno);  
 end loop;  
   
 end; 

Buradaki örneğimizde bize bir tablodan hem bir sürü sayıda sonuç hem de birden fazla bilgi gelmektedir. Örneğin "select * from scott.emp" için aşağıdaki sonuçlar gelmektedir.

 7369     SMITH     CLERK     7902     12/17/1980     800          20  
 7499     ALLEN     SALESMAN     7698     2/20/1981     1600     300     30  
 7521     WARD     SALESMAN     7698     2/22/1981     1250     500     30  
 7566     JONES     MANAGER     7839     4/2/1981     2975          20  
 7654     MARTIN     SALESMAN     7698     9/28/1981     1250     1400     30  
 7698     BLAKE     MANAGER     7839     5/1/1981     2850          30  
 7782     CLARK     MANAGER     7839     6/9/1981     2450          10  
 7788     SCOTT     ANALYST     7566     12/9/1982     3000          20  
 7839     KING     PRESIDENT          11/17/1981     5000          10  
 7844     TURNER     SALESMAN     7698     9/8/1981     1500     0     30  
 7876     ADAMS     CLERK     7788     1/12/1983     1100          20  
 7900     JAMES     CLERK     7698     12/3/1981     950          30  
 7902     FORD     ANALYST     7566     12/3/1981     3000          20  
 7934     MILLER     CLERK     7782     1/23/1982     1300   

Bu kadar sayıda gelen sonucu ayrı ayrı işlemek için bir for loop'una ihtiyacımız vardır. Burada bunun için bir cursor, bir de kullanacağımız rowtype tipinde değişken yaratırız. Ondan sonra cursorımıza çekeceğimiz değerlerin sorgusunu veririz.  For loop'u içinde de aldığımız her değeri tekrar tablomuzu sokarız. Yani tablonunun içindeki verileri çoğaltmış oluruz. En son olarak commit'leyip "select count(*) from scott deneme1"  'den ne kadar kere verilerimizi çoğaltmış olduğumuzu görebiliriz.

3- Bu yazımızda da tablo geri döndürmenin PLSQL de nasil yapıldığını göstereceğiz.

Hiç yorum yok:

Yorum Gönder