ben

OMÜ , Bilgisayar Mühendisliği, 13'

3 Mart 2022 Perşembe

Procedure Örnekleri

 Örnek: Son bir ayda yapılan ödemelerin ortalama tutarını ekrana yazdıran procedure yazalım.


create or replace procedure sp_sumpayment()
language plpgsql
as $$
declare tutar int:=0;
begin
    select sum(amount) into tutar from 
    payment where payment_date between interval '-1' month+current_date and current_date;
    if tutar!=null then
           raise notice 'son bir aydaki tutar:%',tutar;
    else
           raise notice 'son bir ayda ödeme yapılmamış';
    end if;
end; $$


call sp_sumpayment()



Örnek: Verilen filmde oynayan actor sayısı, filmlerde oynayan ortalama aktor sayısından az ise ekrana  düşük bütçeli film , fazla ise yüksek bütçeli film yazdıran procedure yazalım.

create or replace procedure sp_filmactor(film_adi varchar)
language plpgsql
as $$
declare actor_sayisi int:=0;
declare ort_actor_sayisi int:=0;
begin
    select avg(actor_sayi_list) into ort_actor_sayisi from (
    select count(*) as actor_sayi_list from actor a 
    inner join film_actor fa on fa.actor_id=a.actor_id
    group by fa.film_id) as aa;
  
    select count(*) into actor_sayisi from film fl 
    inner join film_actor fa on fa.film_id=fl.film_id 
    where title=film_adi;
    
    if actor_sayisi< ort_actor_sayisi then
          raise notice 'Düşük bütçeli film';
     else
          raise notice 'Yüksek bütçeli film';
     end if;

end; $$


call sp_filmactor('Airport Pollock')




Örnek: son 1 hafta içinde yapılan kiralama işlemlerinde, en çok kiralanan ilk  filmin adını getiren procedure yazalım.

create or replace procedure sp_filmrental()
language plpgsql
as $$
declare filmadi varchar;
begin

select title into filmadi from rental r 
inner join inventory i on i.inventory_id=r.inventory_id 
inner join film fl on fl.film_id=i.film_id
where rental_date between interval '-7' day +current_date and current_date
group by fl.title 
order by count(*) desc limit 1;    

if filmadi!=null then
   raise notice 'en çok kiralanan film:%',filmadi;
else 
   raise notice 'son bir haftada kiralanan film yok';
end if;

end; $$


call sp_filmrental()



Hiç yorum yok: