sp kullanımı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

sp kullanımı

Mesaj gönderen csyasar »

arkadaşlar;

sp kullanımıyla alakalı hiçbirşey bilmiyorum. bilmediğim için de haliyle kullanamıyorum. fahrettin abi nin sp, trigger ve referential integrity kullanımına dair makalesini inceledim. ama hiçbir terimi ve ne işe yaradığını bilmediğim için anlamadım. :x

bu terimleri ve kullanım tiplerini anlatan yardımcı bir makale veya yazı var mı?
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Fahrettin abinin makalesine şimdi yeniden göz attım ama zaten çok güzel şekilde anlatmış ve örneklendirmiş. Yani şimdi daha bunun üzerine anlatılacak ne var burda bilemedim doğrusu :) Sanırım sqle biraz yabancısınız, bunun için size önereceğim sql üzerine biraz uğraşmanız, gerek webden gerekse bir kitaptan faydalanarak.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

şimdi sql cümlelerine yabancı değilim. tabi bir programcı bütün sql cümlelerini kullanmaz. bende mullandığım kadarı yetiyor. ama geçenlerde şunu yapmak istedim. mesela programda kullandığım sql cümlelerini bile hızlı oluyormuş diye sp ile yapmayı düşündüm. tüm işlemlerimi sp üzerine kaydıracaktım. ama yapamadım.

örnek olarak o makalede kullanılan şu kodlardan hiçbirini sql cümlelerinde kullanmadım ve bilmiyorum
  • DECLARE VARIABLE, call, SUSPEND
ben bunları hiçbir sql cümlesinde kullanmadım. bildiğim kadarıyla sp'ün kendine özgü ve sql'den daha geniş bir komut arşivi var. işte fahrettin abi bunları kullanırken dikkat edilecek hususlara, kod yapısına ve sp nasıl yazılır hiç değinmemiş. aslında bir bakıma doğru. forumdakiler nerdeyse tamamı sp kullanıyor.

ben yenilikleri takip etme konusunda çok yavaş davranıyorum. mesela 3 ay önce paradox'tan firebird'e geçmem... Tam bir fiyasko. millet ibriğini doldurdu geri dönüyor. ben daha çeşmeye varamadım.

bu yüzden hızlıca trigger ve sp kullanmayı öğrenmem lazım.

bunları öğrenebileceğim forumdan seçmeler veya bir adres varsa memnun olurum.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

hocam arama yaparsan eminim birçok konunun cevabını bulacaksın. Mesela bu SUSPEND konusu kaç sefer geçti hatırlamıyorum. Bu işin kuralı tek : okuyacan, okuyacan, okuyacan sonra çalışacan, çalışacan, çalışacan.

Bulamadıklarını da sorarsan, dilimiz döndüğünce cevaplarız.

En azından doğru fikri yakalamışsın : Yapabildiğin herşeyi SP ile yap :) Gerisi kolay ;)

Kolay gelsin.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

hocam öncelikle sp yazımındaki kod yapısını incelemem lazım. daha doğrusu öğrenmem lazım. kodları sonra öğreneceğiz. bakın mesela şu an fahrettin abinin makalesindeki:

Kod: Tümünü seç

CREATE PROCEDURE SPI_URUN_GIRIS (  URUN_NO INTEGER,  GIRIS_MIKTARI INTEGER)  AS    
DECLARE VARIABLE DLR_KAYIT_SAYISI integer; 
begin 
  select count(*) 
  from URUN_STOK where URUN_NO = :URUN_NO 
  INTO DLR_KAYIT_SAYISI; 
  if (DLR_KAYIT_SAYISI=0) then 
    insert into URUN_STOK(URUN_NO,STOK_MIKTARI) values(:URUN_NO,0); 
  update URUN_STOK set 
    STOK_MIKTARI = STOK_MIKTARI+:GIRIS_MIKTARI where 
    URUN_NO = :URUN_NO; 
End
cümleciğinden esinlenerek sadece kayıt seçmek için şöyle bir cümle yazdım(ibexper personel'da):

Kod: Tümünü seç

CREATE PROCEDURE SP_CARI  AS    
begin 
  select count(*) 
  from CARI 
End
olmadı. CARI'den sonra ; koydum yine olmadı. nasıl olması gerektiğini de bilmiyorum. yardım lütfen
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

CARI den sonra ; işaretini koyunca muhtemelen hata vermesinin sebebi terminator karakter olmasindandir....
cozum icin bakiniz:
viewtopic.php?t=5746&start=30
* 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ı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

DECLARE ; değişken tanımlamak için kullanılıyor. Delphideki "var" gibi.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

kendi yaptığım sql kod yorumlayıcısı bile bu kodu çalıştırmıyor. line 4 de hata veriyor.

Kod: Tümünü seç

CREATE PROCEDURE SP_CARI
		AS
		BEGIN
SELECT COUNT(*) FROM CARI;	

END;
ibconsole değil ibexpert kullanıyorum
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ibexpert zaten procedure un create baslıgını dolduruyoer
eger her seyi ben yazacagım diyorsan lazy(tembel) mode u kapat
ÜŞENME,ERTELEME,VAZGEÇME
selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n »

hocam tek yapman gereken IB EXPERT için;
Output Parameters
kayit_sayisi integer
Tanımlamak;

Kod: Tümünü seç


begin
  for
  select COUNT(*) from users
  into :kayit_sayisi do
  begin
  suspend;
  end
end
Kolay Gelsin;
;)
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

gkimirti yazdı:ibexpert zaten procedure un create baslıgını dolduruyoer
eger her seyi ben yazacagım diyorsan lazy(tembel) mode u kapat
abi zaten onu dikkate alıyorum ama olmuyor olmuyor olmuyor... ya bi sp kullanmayı beceremedik elimize yüzümüze bulaştırdık.
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

ALLAH'ım ağlamak istiyorum :D :D :D :D :D :D :D :D :D :D :D

ilk sp'mi compile ettim. :D :D :D

işte kodları(güleni vururum):

Kod: Tümünü seç

create procedure SP_CARI
as
DECLARE VARIABLE kayit_sayisi integer;
begin
  select COUNT(*) from cari
  into :kayit_sayisi do 
end
:D :D :D :D :D :D :D :D :D :D
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Mesaj gönderen csyasar »

ya pardon ama, delphi de query'e

Kod: Tümünü seç

select * from SP_CARI
yazıp çalıştırdığımda geriye herhangibir sonuç dönmediğini belirten bir hata mesajı alıyorum. bu neden? galiba SP_CARI den sonra parantez içinde bazı değerler atamam gerekiyo(?) ama hangikurala göre atıyoruz, sonra nerede kullanıyoruz nasıl oluyor bir bilgim yok...
selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n »

Parantez kullanmana gerek yok hocam çünkü senin SP'de girdi parametresi yok onun için ekstra bir şeye gerek yok..Query'nin Fields Editor'unden KAYIT_SAYISI alanını eklediğinde bir tane grid koyarak test edebilirsin..

Kolay Gelsin;
;)
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ibexpertte bir cıkıs parametresi tanımla ve degisken olarak sp icinde bunu kullan
yada ayrı bir satırda kayit_sayisi ni bu degiskene ata
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla