1: Blok yapısı
Postgresql yapısında programlama komutları do end blogu içine yazılır. Bu blog içerisinde kullanılacak değişkenler ise do end içindeki declare kısmına yazılır.
Temel blog yapısı aşağıdaki gibidir.
do $$
declare
-- değişkenler tanımlanır
begin
-- komutlar yazılır
end $$
2. Değişkenler
değişkenlerin türleri sql veri türleri ile aynıdır. bir değişkene birden fazla şekilde veri aktarımı yapılır.
* tanımlandığı yerde değer aktarımı:
declare a int :=5;
* tanımlandıktan sonra veri aktarımı:
declare a int;
a:=6;
* sorgudan gelen değeri değişkene atmak:
- sayi:=(select count(*) from film);
- select count(*) into sayi from film;
3. Ekrana Yazdırmak
Değişken içindeki değeri uyarı ekranına yazdırmak için ;
* raise notice 'toplam film sayisi : %',sayi;
Değişkensiz ekran uuyarısı için;
* raise notice 'bu basit bir uyarıdır'
4. Karar yapısı if-else
a ve b değerlerinin büyüklük küçüklük değerini gösterebilmek için ;
do $$
declare
a int :=6;
b int :=3;
begin
if a>b then
raise notice 'a büyük';
elsif b>a then
raise notice 'b buyuk';
else
raise notice 'eşit';
end if;
end $$
5. Case Kullanımı
do $$
declare
a int :=6;
b int :=3;
begin
case
when a>b then
raise notice 'a büyük';
when b>a then
raise notice 'b buyuk';
else
raise notice 'eşit';
end case;
end $$
Örnek: Basit hesap makinesi:
* if ile yapımı;
do $$
declare
a int :=6;
b int :=3;
secenek char:='*';
sonuc float;
begin
if secenek='+' then
sonuc:=a+b;
raise notice 'toplam:%',sonuc;
elsif secenek='-' then
sonuc:=abs(a-b);
raise notice 'fark:%',sonuc;
elsif secenek='*' then
sonuc:=a*b;
raise notice 'carpım:%',sonuc;
elsif secenek='/' then
sonuc:=a/b;
raise notice 'bolum:%',sonuc;
else
raise notice 'lutfen doğru işlem seciniz';
end if;
* case ile yapımı;
do $$
declare
a int :=6;
b int :=3;
secenek char:='*';
sonuc float;
begin
case
when secenek='+' then
sonuc:=a+b;
raise notice 'toplam:%',sonuc;
when secenek='-' then
sonuc:=abs(a-b);
raise notice 'fark:%',sonuc;
when secenek='*' then
sonuc:=a*b;
raise notice 'carpım:%',sonuc;
when secenek='/' then
sonuc:=a/b;
raise notice 'bolum:%',sonuc;
else
raise notice 'lutfen doğru işlem seciniz';
end case;
end $$
Hiç yorum yok:
Yorum Gönder