Tum IFS viewleri, son iki field olarak objid ve objversiyon
alanlarını içermektedirler. Bu iki alan tüm insert, update ve delete
operasyonlarında kullanılmaktadır. Bu aşamada bu iki alandan biraz bahsedersem
iyi olur diye düşünüyorum.
objid
*****************
rowid değerini içerir ve doğal olarak unique tir. Rowid oracle da
bir satıra ulaşmanın en hızlı yoludur.
objversion
*****************
Satırın, kayıt tarihini içerir.
Örneğin aşağıdaki sql cümlesi bize en son kaydedilmiş olan satırı verecektir.
select max(objversion) from ifs_tablo_adi_neyse_o
IFS kalsik sql DML cümleleri yerine, tablo ile ilgili insert, update,delete ve başka gerekli işlemleri yapan function ve procedure leri bulunduran packageler kullanır ve bunlara IFS API denilir veya ben oyle diyorum :)
Yani API her tabloya özel bir oracle package sini ifade eder. Sistemde
pek çok API mevcuttur.
tablo adı : PURCHASE_PART_SUPPLIER_TAB
view : PURCHASE_PART_SUPPLIER
package : PURCHASE_PART_SUPPLIER_API
Bir IFS API, tablonun her satırının hangi değerleri alabileceğini, hangi alanların zorunlu olduğunu, ilk değerlerin neler olduğunu vs. belirleyen kuralları
ve diğer IFS gerekliliklerini içerisinde barındırır.
IFS API, eklenen, silinen veya güncellenen kaydın sistem içerisinde
tutarlı kalmasını garanti altına alır. Bu nedenle insert, update, delete işlemleri
mutlaka api ler kullanılarak gerçekleştirilmelidir. Vakit bulunca IFS API leri ile ilgili daha ayrıntılı başka bir yazı da hazırlamayı düşünüyorum.
Örneğin
update ifs_tablo_adi set field1=24 where keyfield=1
şeklinde sql cümlelerinin çalıştırılması tutarlılığı olumsuz yönde etkileyecektir.
objversion ve objid kullanarak update işleminin gerçekleştirilmesi
*******************************************************************
declare
info_ VARCHAR2(2000);
objid_ VARCHAR2(2000);
objversion_ VARCHAR2(2000);
attr_ VARCHAR2(2000);
begin
objid_ := 'AAAQ06AAFAAAGJcAAB';
objversion_ := '20080926143437';
Client_SYS.Clear_Attr(attr_);
Client_sys.Add_To_Attr('LIST_PRICE','160',attr_);
ifsapp.PURCHASE_PART_SUPPLIER_API.Modify__(
info_, objid_, objversion_, attr_, 'DO'
);
end;
Hiç yorum yok:
Yorum Gönder