Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Son id
#9
(12-12-2017, Saat: 18:54)adelphiforumz Adlı Kullanıcıdan Alıntı:
create Function [dbo].[fnx_Get_MaxID] ()
      Returns int As
Begin  
Declare @SonNo int

Select @SonNo = Max(ID) From Satis

If @SonNo = 0 Or @SonNo Is Null 
Set @SonNo = 1
Else
Set @SonNo = @SonNo + 1
    
Return @SonNo
End

Merhaba,

Bir UDF'nin içinde SELECT ile tablodan veri çekmek performans açısından çok sakıncalı. Bunun yerine aşağıdaki fonksiyonu doğrudan kullanmak performans açısından darboğaza düşmenize engel olur;

SELECT IDENT_CURRENT ( 'SIRAPIS' ) as ID

Eğer Tablo veritabanında varsa hiç bir zaman NULL değeri üretmez. Dolayısıyla ISNULL gibi uğraşılara girmenize gerek kalmaz. Bunu aşağıdaki şekilde Delphi üzerinde şöyle de kullanabilirsiniz;

       Close;
       SQL.Clear;
       SQL.Add('SELECT IDENT_CURRENT ( ''SIRAPIS'' ) as ID');
       //Prepared := True;
       Open;
       SonId := FieldByName( 'ID' ).AsInteger + 1;
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
WWW
Cevapla


Bu Konudaki Yorumlar
Son id - Yazar: Dostk - 11-12-2017, Saat: 13:05
Cvp: Son id - Yazar: Abdullah ILGAZ - 11-12-2017, Saat: 13:11
Cvp: Son id - Yazar: meko - 11-12-2017, Saat: 13:47
Cvp: Son id - Yazar: Fesih ARSLAN - 11-12-2017, Saat: 14:02
Son id - Yazar: Abdullah ILGAZ - 11-12-2017, Saat: 14:07
Son id - Yazar: mcuyan - 11-12-2017, Saat: 15:01
Cvp: Son id - Yazar: Dostk - 12-12-2017, Saat: 13:42
Son id - Yazar: adelphiforumz - 12-12-2017, Saat: 18:54
Cvp: Son id - Yazar: uparlayan - 16-12-2017, Saat: 11:15
Son id - Yazar: dilo - 17-12-2017, Saat: 05:29



Konuyu Okuyanlar: 1 Ziyaretçi