Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Procedure bağlantı metodu ve if kullanımı
#1
Merhaba

SET TERM ^ ;

create or alter procedure ara (
   numara varchar(20))
returns (
   kart_nu varchar(20),
   id integer)
as
begin
 /* Procedure Text */

for select ID,KART_NU from KART
WHERE ((KART_NU=:NUMARA) AND ((SON +7) < (cast('Now' as date))) )
    or ((KART_NU=:NUMARA) and (SON IS NULL))

into :ID , :KART_NU

do
begin
   suspend;
end
end
^

SET TERM ; ^

/* Following GRANT statements are generated automatically */

GRANT SELECT ON KART TO PROCEDURE ARA;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE ARA TO SYSDBA;


Bu şekilde bir stored procedure var . Bu procedure nasıl kullanmalıyım yada geliştirmeliyim?
Amaç eğer geriye kayıt dönerse Delphi tarafında işlem yapmak.

TFDQuery ile bağlanmak yerine bu şekilde Firebird Procedure yazdım bu kullanım şekli TFDQuery sorgusundan ne kadar daha hızlı olur ?


Yukarıdaki procedure eğer kayıt bulunmussa geriye bir sonuç göndermesini ve aynı tablodaki SON isimli Date field değerini Bugun tarihi olarak güncellemesini etmesini istiyorum.
Fakat bu kısmı nasıl yazacağımı bilmiyorum. if deyimini nasıl kullanıp bu procedure geliştirmeliyim?

İki farklı procedure olarak kullanmak daha mı uygun olur. Bir procedure il select komutunu sonucu TFDQuery ile çekip kayıt varsa farklı bir update procedure çalıştırmak ?

Hayırlı Ramazanlar.

e5U2cw.png
Genelde telefondan ingilizce klavye ile ileti gönderiyorum.
Cevapla
#2
(01-05-2020, Saat: 13:09)41linea41 Adlı Kullanıcıdan Alıntı: Merhaba

SET TERM ^ ;

create or alter procedure ara (
   numara varchar(20))
returns (
   kart_nu varchar(20),
   id integer)
as
begin
 /* Procedure Text */

for select ID,KART_NU from KART
WHERE ((KART_NU=:NUMARA) AND ((SON +7) < (cast('Now' as date))) )
    or ((KART_NU=:NUMARA) and (SON IS NULL))

into :ID , :KART_NU

do
begin
   suspend;
end
end
^

SET TERM ; ^

/* Following GRANT statements are generated automatically */

GRANT SELECT ON KART TO PROCEDURE ARA;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE ARA TO SYSDBA;


Bu şekilde bir stored procedure var . Bu procedure nasıl kullanmalıyım yada geliştirmeliyim?
Amaç eğer geriye kayıt dönerse Delphi tarafında işlem yapmak.

TFDQuery ile bağlanmak yerine bu şekilde Firebird Procedure yazdım bu kullanım şekli TFDQuery sorgusundan ne kadar daha hızlı olur ?


Yukarıdaki procedure eğer kayıt bulunmussa geriye bir sonuç göndermesini ve aynı tablodaki SON isimli Date field değerini Bugun tarihi olarak güncellemesini etmesini istiyorum.
Fakat bu kısmı nasıl yazacağımı bilmiyorum. if deyimini nasıl kullanıp bu procedure geliştirmeliyim?

İki farklı procedure olarak kullanmak daha mı uygun olur. Bir procedure il select komutunu sonucu TFDQuery ile çekip kayıt varsa farklı bir update procedure çalıştırmak ?

Hayırlı Ramazanlar.

e5U2cw.png

SET TERM ^ ;

create or alter procedure kaydet (
   numara varchar(20))
as
begin
 /* Procedure Text */
 update kart
  SET SON = (cast('Now' as date) )
  WHERE  KART_NU=:NUMARA     ;
 suspend;
end
^

SET TERM ; ^

/* Following GRANT statements are generated automatically */

GRANT SELECT,UPDATE ON KART TO PROCEDURE KAYDET;

/* Existing privileges on this procedure */

GRANT EXECUTE ON PROCEDURE KAYDET TO SYSDBA;

İkinci bir Procedure ile guncelleme yapıyorum ama iki procedure birleştirme imkanı var mı?
Tek procedure ile hem aranan kaydın olup olmadığını Tfdquery ile sorgulayıp kayıt olup olmadığını delphi  tarafına bildirip hem de güncelleme yapılabilir mi?
Genelde telefondan ingilizce klavye ile ileti gönderiyorum.
Cevapla
#3
Anladığım kadarı ile ID ve KART_NU alanları mecbur donecek, burda amaç SON alanını en son tarihe güncellemek sanırım.

create or alter procedure ara (
   numara varchar(20))
returns (
  kart_nu varchar(20),
  id integer)
as
begin
select ID, KART_NU from KART
WHERE ((KART_NU=:NUMARA) AND ((SON +7) < (cast('Now' as date))) )
   or ((KART_NU=:NUMARA) and (SON IS NULL))

into :ID , :KART_NU
if (ID>0) Then
update kart
 SET SON = cast ('Now' as date)
 WHERE ID = :ID and KART_NU = :KART_NU

end
şeklinde yapılabilir.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Aşırı Field Kullanımı hk. uparlayan 9 1.073 15-02-2020, Saat: 13:46
Son Yorum: otonomi
  Left Outer kullanimi 41linea41 2 491 24-12-2019, Saat: 07:42
Son Yorum: 41linea41
  Stored Procedure 'de döngü işlemi boreas 4 1.135 21-03-2019, Saat: 22:58
Son Yorum: boreas
  Generator kullanımı Lord_Ares 6 1.790 05-10-2018, Saat: 08:51
Son Yorum: esistem
  FireBird Merge Into Kullanımı mcuyan 2 1.042 13-08-2018, Saat: 12:40
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi