Merhabalar,
Database olarak firebird kullanıyorum. Delphi de yazdığım bir fonksiyonu storedProcedure'a dönüştürmeye çalışıyorum.
StoredProcedure' da for, while, if kullanımına ilişkin örnek verebilirmisiniz.
Bulduğum örnekler oracle ilişkin bir türlü çeviremedim.
Kısaca yapmak istediğim tablodan Puan'ı 0 dan büyük olanları seçecek, örneğin EksPuan olarak gönderdiğim değeri EksPuan 0 olana kadar Puanlardan düşecek. Düşen puan kadar da EksPuan azalacak.
Not: Biliyorum kod istemem doğru değil ama küçük bir ipucu da yeterli olabilir.
Saygıyla
StoredProcedure for, while, if kullanımı
Estagfirullah...
viewtopic.php?t=644 linki altindaki makalede Admin'in de dediği gibi bazı stored procedure ornekleri var... Bu arada bir ara o makaleye beir kac farkli stored procedure ornegi daha eklemekte fayda olabilir dediginiz gibi dongu orneklerini iceren...
Interbase ile dongu iceren hic stored procedure yazmadim. Makalede if icin ornekler var. Fakat bir baska veritabanı icin olan kodları uyarlamak interbase icin pek uymayacaktir. Firebird kullanmadigim icin belki ilave komutları olabilir. Interbase'in SQL Reference'e bakinca orada bir dogu komutu olmadigini gordum... Belki procedure'un kendini cagirmasi lie birseyler yaplabilir. Ya da firebird'e ilgili komutlar olabilir. Firebird 'un SQL reference'ine bakarak bunu ogrenebilirsiniz...
viewtopic.php?t=644 linki altindaki makalede Admin'in de dediği gibi bazı stored procedure ornekleri var... Bu arada bir ara o makaleye beir kac farkli stored procedure ornegi daha eklemekte fayda olabilir dediginiz gibi dongu orneklerini iceren...
Interbase ile dongu iceren hic stored procedure yazmadim. Makalede if icin ornekler var. Fakat bir baska veritabanı icin olan kodları uyarlamak interbase icin pek uymayacaktir. Firebird kullanmadigim icin belki ilave komutları olabilir. Interbase'in SQL Reference'e bakinca orada bir dogu komutu olmadigini gordum... Belki procedure'un kendini cagirmasi lie birseyler yaplabilir. Ya da firebird'e ilgili komutlar olabilir. Firebird 'un SQL reference'ine bakarak bunu ogrenebilirsiniz...
Selamlar,
Genelde örneklerde falan doğru dürüst bir şekilde ben de bulamamıştım ama biraz yırtınıp başarmıştım
Bazı SQL kullanımları IB ve FB'de DSQL'de filan kullanılıyor (örneğin CURSOR) olayı gibi.
Aşağıda nasıl kullanabileceğinize dair code örnekleri var onlardan faydalanabilirsiniz.
Örnek1 :
Bu örnekte TABLO1'deki ALAN1 (Integer), ALAN2 (String) fieldları ALAN3'ün 5'e eşit olduğu kayıtları Döngü içerisinde select ediliyor. Bildiğimiz For...Next gibi çalışmıyor. :INT_ALAN1 ve :STR_ALAN2 ise Procedure içinde tanımlanmış bellek değişkenleri.
Örnek2 :
Bu örnekte ise While döngüsü kurulup, INT_SAYAC değişkeni 100'den küçük olduğunca dönmesi sağlanıyor.
IF için ise
gibi gibi kullanılıyor.
Kolay Gelsin
Genelde örneklerde falan doğru dürüst bir şekilde ben de bulamamıştım ama biraz yırtınıp başarmıştım

Bazı SQL kullanımları IB ve FB'de DSQL'de filan kullanılıyor (örneğin CURSOR) olayı gibi.
Aşağıda nasıl kullanabileceğinize dair code örnekleri var onlardan faydalanabilirsiniz.
Örnek1 :
Kod: Tümünü seç
FOR SELECT ALAN1, ALAN2 FROM TABLO1 WHERE ALAN3 = 5 INTO :INT_ALAN1, :STR_ALAN2 DO
BEGIN
END
Örnek2 :
Kod: Tümünü seç
WHILE (INT_SAYAC < 100) DO
BEGIN
.
.
.
INT_SAYAC = INT_SAYAC + 1 ;
END
IF için ise
Kod: Tümünü seç
IF (INT_DEGISKEN = 1) THEN
INT_DEGISKEN = 0 ;
.
.
.
IF (STR_DEGISKEN IS NULL) THEN
STR_DEGISKEN = 'ADNAN' ;
.
.
.
IF (DBL_DEGISKEN > 1000 ) THEN
BEGIN
DBL_DEGISKEN = DBL_DEGISKEN / 2 ;
DBL_DEGISKEN = DBL_DEGISKEN + 1 ;
END
.
.
.
IF (INT_DEGISKEN > 0 ) THEN
BEGIN
DBL_DEGISKEN = DBL_DEGISKEN / 2 ;
DBL_DEGISKEN = DBL_DEGISKEN + 1 ;
END
ELSE IF (INT_DEGISKEN > 0 ) THEN
BEGIN
END
gibi gibi kullanılıyor.
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Aşağıdaki Linklerden faydalanabilirsiniz.
http://www.ibphoenix.com/main.nfs?a=ibp ... _using_sps
http://www.ibphoenix.com/main.nfs?a=ibp ... ro_sp_trig
http://www.ibphoenix.com/main.nfs?a=ibp ... p_document
Kolay Gelsin,
http://www.ibphoenix.com/main.nfs?a=ibp ... _using_sps
http://www.ibphoenix.com/main.nfs?a=ibp ... ro_sp_trig
http://www.ibphoenix.com/main.nfs?a=ibp ... p_document
Kolay Gelsin,