declare cursor hakkında
declare cursor hakkında
fire bird de view içerisinde cursor deklare edebiliyormuyuz yaptığım bütün denemeler hata ver di örnek verebilecek olan var mı
Selamlar,
Firbird'de Cursor tanımlanabiliyor ancak sanırım siz bu Cursor'ları SP içinde veya Delphi içinden kullanmak istiyorsunuz. Hep karıştırıyorum, CURSOR'lar D-SQL'de geçerli değil P-SQL'^de geçerli. (Yada tersi
)
Yani birinde geçerli değil ve o geçerli olmayan yer bizim istediğimiz yer.
Ben de çok uğraşmıştım ama bulamamıştım. SOnunda dokumanlarına rastladım.
Eğer C veya benzeri bir dil kullanıyorsanız CURSOR kullanabiliyorsunuz ama Delphi'den veya SP'lerin içinden hazırlamak mümkün değil (Henüz)
Sanırım Feature Requestlerde bunlar planlanıyor.
Kolay Gelsin
Firbird'de Cursor tanımlanabiliyor ancak sanırım siz bu Cursor'ları SP içinde veya Delphi içinden kullanmak istiyorsunuz. Hep karıştırıyorum, CURSOR'lar D-SQL'de geçerli değil P-SQL'^de geçerli. (Yada tersi

Yani birinde geçerli değil ve o geçerli olmayan yer bizim istediğimiz yer.
Ben de çok uğraşmıştım ama bulamamıştım. SOnunda dokumanlarına rastladım.
Eğer C veya benzeri bir dil kullanıyorsanız CURSOR kullanabiliyorsunuz ama Delphi'den veya SP'lerin içinden hazırlamak mümkün değil (Henüz)
Sanırım Feature Requestlerde bunlar planlanı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/
benim asıl sıkıntım tablomdaki aktif kayıtttan bir önceki kaydı seçmek cursor ile bunun yapıldığını okudum. forma yazdım ama bir cevap alamadım.
view içerisinde yapmak istediğim aktif kayıt ile bir önceki kaydın farkını almak tabiki bu kullanıcının tercihine bağlı olarak 5 satırda 50 satırda olabilir o sebepten bir önceki kaydı sorgu ile değil başka bir yöntem ile seçmem gerekiyor.
view içerisinde yapmak istediğim aktif kayıt ile bir önceki kaydın farkını almak tabiki bu kullanıcının tercihine bağlı olarak 5 satırda 50 satırda olabilir o sebepten bir önceki kaydı sorgu ile değil başka bir yöntem ile seçmem gerekiyor.

Dediğim gibi sadece normal şekilde baştan sona doğru olan sıralamayı sondan başa doğru yaptıracaksınız. Ve program içinden de bir sonraki deyip aslında bir önceki kayıta ulaşmış olacaksınız. Gerçi kullanacağınız DataSet lerde önceki kayıta (DataSet.Prior) ile de ulaşabilirsiniz 

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
viewtopic.php?t=16386&highlight=view
hocam bu soruyu doğuran sorun ayrıntılı olarak yukarıdaki linkte
hocam bu soruyu doğuran sorun ayrıntılı olarak yukarıdaki linkte
Şu kodda ki mantığı kavrayabilirsen isteğini gerçekleştirebilirsin (COALESCE'li satırı):
İyi çalışmalar.
Kod: Tümünü seç
SELECT
T1.TARIH,
COALESCE(T1.TUKETIM, 0) - COALESCE((SELECT FIRST 1 T2.TUKETIM FROM TABLO1 T2 WHERE T2.TARIH < T1.TARIH ORDER BY T2.TARIH DESC), 0),
...
FROM TABLO1 T1
hocam kodu aşağıdaki gibi uyarladım ama istediğim sonuç olmadı.
siz kodları yanılmıyorsam 2 ayrı tablo için yazmışsınız. ama veriler aynı tabloda
create view "tuketim"("Tarih","tuketim" )
as
select
elektrik_aktif.tarih,COALESCE(elektrik_aktif.aktif, 0) - COALESCE((SELECT FIRST 1 elektrik_aktif.aktif FROM elektrik_aktif WHERE elektrik_aktif.tarih < elektrik_aktif.tarih ORDER BY elektrik_aktif.tarih DESC), 0)
FROM elektrik_aktif;

siz kodları yanılmıyorsam 2 ayrı tablo için yazmışsınız. ama veriler aynı tabloda
create view "tuketim"("Tarih","tuketim" )
as
select
elektrik_aktif.tarih,COALESCE(elektrik_aktif.aktif, 0) - COALESCE((SELECT FIRST 1 elektrik_aktif.aktif FROM elektrik_aktif WHERE elektrik_aktif.tarih < elektrik_aktif.tarih ORDER BY elektrik_aktif.tarih DESC), 0)
FROM elektrik_aktif;

Ben aynı tablo için yazdım. Yani doğru. Yaptığın hata tablo için ALIAS tanımlamanda. View'i şuna benzer şekilde düzenlersen düzelecektir:
T1 ve T2'ye dikkat edin.
İyi çalışmalar.
Kod: Tümünü seç
create view "tuketim"("Tarih","tuketim" )
as
select
T1.tarih, COALESCE(T1.aktif, 0) - COALESCE((SELECT FIRST 1 T2.aktif FROM elektrik_aktif T2 WHERE T2.tarih < T1.tarih ORDER BY T2.tarih DESC), 0)
FROM elektrik_aktif T1;
İyi çalışmalar.
ems manager'in ne olduğunu bilmiyorum, ancak COALESCE ve alias olayı FireBird'ün versiyonu ile ilgili. Versiyonu eski bir FireBird yüklü gibi gözüküyor.armadillo yazdı:hocam ems manager bu COALESCE ve alias tanımlamayı desteklemiyormu iş yerinde ibexpert kullanıyorum dün gece sorunsuz çalıştı ama evde çalıştıramadım bir türlü
İşin mantığı aslında tamamen düz mantık. SQL'in sınırlarını az buçuk bildiğin taktirde düz mantıkla birçok şeyi yapabiliyorsun. Artık FireBird 2.0'da SUB Select query'lerini de kullanabiliyorsun. SUB Select, CASE WHEN ve COALESCE kavramları bir çok işinizi inanılmaz derecede kolaylaştırıyor. Öyleki ben şahsen neredeyse SP ve View hiç kullanmıyorum.
İyi çalışmalar.