Döngüler belli bir başlangıç değerinden belli bir bitiş değerine kadar olan sayıda dönerler ve her bir döngü içinde verilen komutları yerine getirirler.
örnek olarak 1 den 10 a kadar sayıların toplamını getiren plsql komutunu 3 farklı loop ile yazalım ki aradaki farklılığı görmüş olalım.(1 ve 10 dahil)
6. Loop Döngüsü
Loop komutu verilen değerler arasında işlem yapmamız için bize fayda sağlayan plgpsql komutlarından birisidir.
do $$
declare
sayac int:=1 ;
toplam int:=0;
begin
Loop
toplam:=toplam+sayac;
sayac=sayac+1;
exit when sayac=11;
end loop;
raise notice 'toplam sonucu:%',toplam;
end $$
7. For Loop Döngüsü
FOR LOOP komutu ise Loop komutunda yapılacak işlemlerini biraz daha kısaltarak daha kolay yapmamızı sağlayan komutlardan birisidir.
kullnım: for sayac in 1 .. 10 by 1 => 1 den başla 10 a kadar 1er 1 er devam et
do $$
declare
toplam int:=0;
begin
for sayac in 1 .. 10 by 1
Loop
toplam:=toplam+sayac;
end loop;
raise notice 'Loop toplam sonucu:%',toplam;
end $$
8. While Loop Döngüsü
Loop kullanımına çok benzese de ufak farklılıkları vardır.
do $$
declare
sayac int:=1;
toplam int:=0;
begin
while sayac<11 loop
toplam:=toplam+sayac;
sayac:=sayac+1;
end loop;
raise notice 'While Loop toplam sonucu:%',toplam;
end $$
9. Query Loop(sorgu sonucunda döngü kurma)
Bazen belli bir sayısal dizin içinde değil, sorgu ile gelen veriler içinde döngü kurmamız gerekebilir. Bu işlem için çoğu kez cursorler kullanılsa da for loop ile daha kolay bir yolu var. Film tablosunda filmin süresi 160 dan buyuk olanları döngü ile ekrana yazdırmak için;
do $$
declare
f record;
begin
for f in (select title, length
from film where length>160
order by title )
loop
raise notice '% (% dakika)', f.title, f.length;
end loop;
end;
$$
Hiç yorum yok:
Yorum Gönder