sp procedure oluştururken hata

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
ercere
Üye
Mesajlar: 48
Kayıt: 23 Kas 2004 02:38
Konum: Ulus-BARTIN

Mesaj gönderen ercere »

Sanıyorum becerdim.FB ve IB Expert indirdim .(tabi defalarca yükledim kaldırdım.)
enson Fahrettin beyin gönderdiği sp kodunu girdim onu kaydetti .Yarın detaylı inceleyip sonucu bildireceğim.
Bilginin sınırı öğrenmenin yaşı yoktur.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

gerçekten çok ilginç. var olan bir SP nin adını dahi değiştirdikten sonra hata vermesi
delphi yi uninstall e gerek yoktu. sadece IB yi unisntall et. Server aktif olmasın. yoksa gds32.dll silinmez. sildikten sonra diskinde bir gds32.dll leri arattır, garanti olsun. Birde IBX in update ini yapmayı unutma.
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
arkadaşım Interactive SQL de benim bildiğim sql kodları çalışır.
SP oluşturmak için IBExpert i deniyebilirmisin.
Linklerde linki olması lazım. ibexpert diye forumda aratırsan ibexpert hakkında bilgi edinebilirsin.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

aslangeri yazdı:Interactive SQL de benim bildiğim sql kodları çalışır.
Sonucta SP create edecek kod da o anlamda calismasi gereken bir SQL kodudur.... update, insert, delete, create, alter vs.... her türlü sql cümlesinin çalışması gerekir....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

fahrettin yazdı:
aslangeri yazdı:Interactive SQL de benim bildiğim sql kodları çalışır.
Sonucta SP create edecek kod da o anlamda calismasi gereken bir SQL kodudur.... update, insert, delete, create, alter vs.... her türlü sql cümlesinin çalışması gerekir....
ama çalışmıyor.
select, insert, update çalışıyor ama diğerleri ı ıh.
ibConsole ile beraber gelen interactive SQL de Create Procedure calışmıyor (yada ben çalışıtıramadım).
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Hemen denedim....
Once calismadi fakat calismasi gerektiginden kesin emin oldugum icin biraz kurcaladim....

Sonuc: IBConsole'da Edit>options menusun icinde Terimnator olarak ; seçili idi.... Bu da bir SP create kodu içinde var olan ; işaretlerinin Interactive SQL tarafindan farkli yorumlanmasi gereken SQL statementlarini ayirdigi zannedildigi icin ornegin

Kod: Tümünü seç

CREATE PROCEDURE SP_MUSTERI (
  GIRIS INTEGER
) RETURNS (
  CIKIS VARCHAR(15)
) AS  
BEGIN 
  FOR SELECT AD 
      FROM musteri 
      WHERE MUSTERI_NO=:giris 
      INTO :cikis
  DO 
  BEGIN 
    SUSPEND; 
  END 
END
kodunu

Kod: Tümünü seç

CREATE PROCEDURE SP_MUSTERI (
  GIRIS INTEGER
) RETURNS (
  CIKIS VARCHAR(15)
) AS  
BEGIN 
  FOR SELECT AD 
      FROM musteri 
      WHERE MUSTERI_NO=:giris 
      INTO :cikis
  DO 
  BEGIN 
    SUSPEND; 
ve

Kod: Tümünü seç

  END 
END
şeklinde iki ayri kod parçası olarak algilayip her ikisini de ayri ayri çalıştırmayi denemektedir. Doğal olarak da bunu başaramamaktadır.
ercere 'nin calistiramama sebebi de tamamen budur. basit icinde ; geçmeyen SP leri create edebilirken içinde ; olanlari create edemiyordu...

Sayin ercere ya tarif ettigim sekilde terminator stringi silmeli veya SP icinde gecmeyecek baska bir karakter secmelisiniz... Ya da Delphi ile gelen SQL Explorer gibi bir ortamdan bu SP create kodlarınızı denemelisiniz....

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
ercere
Üye
Mesajlar: 48
Kayıt: 23 Kas 2004 02:38
Konum: Ulus-BARTIN

Mesaj gönderen ercere »

Tekrar Merhaba
Bir haftalık maratondan sonra artık bende sp procedur oluşturmayı başardım (Forum sayesinde tabi).
Tabi bu arada editörler arasında ufak tefek yazım kuralı değişikliği olduğunu gördüm.Örneğin fahrettin beyin yazdığı örnek kodla İB expertte
tabloları tektek oluşturdum.İB consol da ise tüm kodu İnteractive SQL le tek seferde kopyalayıp bir defada oluşturdum.
Yine Fahrettin Beyin sp procedure kodunu aynen ib expert kopyaladım ama aynen kabul etmedi.Sonra hataları kontrol ederek tırnak roblemlerini halledip öyle kabul ettirebildim.

Aynı örnekleri Delphi7 de ibquery i ile yapmaya çalıştım.Orada dikkatimi çeken olay Sql cümleleri için tanımlanan vede kullanılan fieldlerin aynı karakterlerle (yani küçük büyük harf) kulanılması gerektiği aksi taktirde hata verdiği idi.Şöyleki U_ADI şeklinde tanımlanan bir fiedl primary keyde u_adi olarak işaret edilirse hata veriyor.
Buradanda şu sonuca vardım SQL cümleleri ile kullandığım kodları Fahrettin Beyin de söylediği gibi BÜYÜK harfle yazmak en doğrusu(Türkçe karaterler dikkat ederek tabiki)
Fahrettin Beyin yazdığından
US.URUN_NO = U.URUN_NO and cast(US.SATIS_ZAMANI as date) between :BASLANGIC_TARIHI and :BITIS_TARIHI order by
1 asc,2 asc
INTO :TARIH, :URUN_ADI, :HAREKET_TIPI,:MIKTAR

Kod: Tümünü seç

   ibquery1.SQL.Add('US.URUN_NO = U.URUN_NO and cast(US.SATIS_ZAMANI as date) between '':BASLANGIC_TARIHI''   and '':BITIS_TARIHI'' order by  ');
    ibquery1.SQL.Add('1 asc,2 asc  ');
    ibquery1.SQL.Add('INTO TARIH, URUN_ADI, HAREKET_TIPI , MIKTAR  ');
Üstteki Fahrettin Beyin hazırlamış olduğu kod alttaki ise benim delphi7 kabul ettirdiğim kod.Dikkkat ederseniz Where içinde kullanılan parmetreler yani girdi parametreleri delphi de '' içine (iki tek tırnak) alınması gerekiyor.İnto dan sonraki çıktı parametreleri ise : istemiyor.Ayrıca + işareti yerinede || kullanmak gerekiyor.
Arkadaşlar bunlar tesbitlerim.
Şimdi bir şey öğrenmek istiyorum Diğer delphi dışı yardımcı editörler yardımı ile vt Yi biz oluşturuyoruz.Uygulamacı yeni bir vt oluşturulması gerektiğinde ne yapıpta vt oluşturacak?.(Örneğin başka firmalar yaratmak gibi)
Eğer bu konuda tartışacak epey olay varsa forumda başka bir konu açmamız gerekecekmi.
Hepinize Kolay gele.
(not: Epey geç yazdım.Çünkü bu çalışmalarımı evde yapıyorum.İnternet sağlayıcım da benden 100 m uzaktaki bir arkadaş.Oda kaç gecedir işyerini erken kapatıp sigortalarını kapatıyor.Dolayısıyle ben offline oluyorum.bu yüzden geciktim.Bu gece de gidip modeme ayrı bir prizden elk.alıp online oldum)
Bilginin sınırı öğrenmenin yaşı yoktur.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Problemleri asabilmenize sevindim...
ercere yazdı:Eğer bu konuda tartışacak epey olay varsa forumda başka bir konu açmamız gerekecekmi.
forum kurallari geregi soru sormadan once bu sorunun daha once sorulmus olma ihtimaline karsi arastirma yapmali eger bir sonuca varamaz isenis ve bu konunun devami niteliginde degilse yeni bir baslik acmalisiniz..

Ki size bu konuda bu linki vererek yardimci olabilirim...
viewtopic.php?t=3113
Ozetle kullanicinin yeni veritabani olusturmasina ihtiyac pek olmayacaktir. Musterinize bos veritabanini ilk programi verirken yuklemeniz yeterli olacaktir...

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ercere yazdı: Şimdi bir şey öğrenmek istiyorum Diğer delphi dışı yardımcı editörler yardımı ile vt Yi biz oluşturuyoruz.Uygulamacı yeni bir vt oluşturulması gerektiğinde ne yapıpta vt oluşturacak?.(Örneğin başka firmalar yaratmak gibi)
viewtopic.php?t=2171
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
ercere
Üye
Mesajlar: 48
Kayıt: 23 Kas 2004 02:38
Konum: Ulus-BARTIN

Mesaj gönderen ercere »

merhaba
Son mesajımda sorunumun çözüldüğünü yazmıştım.Ama Programı çalıştırdığımda gördüm ki sp procedurlerin hiç biri çalışmıyor.(Ama yaratılmışlar.Zaten beni yanıltanda bu oldu)
Tekrar proc.incelemeye aldım.İBexpertin kodları renkli göstermesi çok iyi.Orada çalışmayan procdurleri inceleyerek farkları taradım.
delphiyi kurcalayarak ib ye doğru kodun yansımasını sağlarım diye adım adım uğraşarak sorunu buldum..

IBQUERY' object inspectoründe paramcheck özelliği false yapıldığında tüm sorun çözülüyor.
Fahrettin Beyin Kodları Ibquery SQL'e aynen yazıldığında delphi bunu FB
aktarıyor vede sorunsuz çalışıyor.
Hepinize Teş. Kolay gelsin
Bilginin sınırı öğrenmenin yaşı yoktur.
Cevapla