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