Aşağıdaki SP'yi tek bir personel için çalıştıra biliyorum...istediğim tüm personel için bu SP yi çalıştırmak.. bir kaç tane deneme yaptım ama bir türlü çözemedim acaba select cümlesi içinde olurmu bir fikir verirseniz sevinirim..
declare variable i_gir_tarihi date;
declare variable gun integer;
declare variable s1 integer;
begin
select P.P_IGT
from PERSONEL P
where P.P_SICIL = 1
into :i_gir_tarihi;
gun=(current_date - :i_gir_tarihi) / 180;
if (gun > 10) Then
Begin
s1=((gun - 10) * 2) + 10;
end
else
begin
s1=:gun;
end
update MAAS M set
M.C_P = :s1
where M.P_SICIL = 1;
end
declare variable i_gir_tarihi date;
declare variable gun integer;
declare variable s1 integer;
declare variable p_sicil_no integer;
begin
for select P.P_SICIL from PERSONEL P into :p_sicil_no do
begin
select P.P_IGT from PERSONEL P
where P.P_SICIL = :p_sicil_no
into :i_gir_tarihi;
gun=(current_date - :i_gir_tarihi) / 180;
if (gun > 10) Then
Begin
s1=((gun - 10) * 2) + 10;
end
else
begin
s1=:gun;
end
update MAAS M set
M.C_P = :s1
where M.P_SICIL = :p_sicil_no;
end
end
klasik for dongusu gibi sıra ile tum personeller icin update yapacak
UPDATE MAAS M SET C_P =
(SELECT
CASE
WHEN ((current_date - P.P_IGT) / 180) > 10 THEN
((((current_date - P.P_IGT) / 180) - 10) * 2) + 10
ELSE ((current_date - P.P_IGT) / 180)
END
FROM PERSONEL P WHERE P.P_SICIL = M.P_SICIL)
Elimde veri olmadığından test edemedim ama bu şekilde çalışır diye düşünüyorum.
Kolay gelsin,
Doğan Zorlu, İzmir
------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Gokmen hocam böylesini hiç düşünemedim..abi bende şöyle bir huy var bir problem var diyelim bu problemi aşana kadar başka bir adıma geçemiyorum.huyum kurusun...
kafamda hep Dogan hocanın yazmış olduğu gibi bir şeyler tasarlıyordum ama nasıl sorusu vardı o da doğan hocam sayesinde kalktı (select içinde CASE olayı ) her iki yollada problem çözüldü..