Stored Procedure ve Trigger

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Stored Procedure ve Trigger

Mesaj gönderen eyalin »

Merhaba

8.semineri bikaç kez izledim.(MSSQL Kullanıyorum)

Fahrettin beyin borç,alacak toplam örneğine benzer bir şey yapmaya çalışıyorum.2 adet tablom var

T_TAHSILAT
-KOMISYONREF
-BORC
-ALACAK

T_TOPLAM
-KOMISYONREF
-TOPLAMBORC
-TOPLAMALACAK

Şöyle bir prosedür hazırlamaya çalıştım:

CREATE PROC dbo.SPT_TAHSILAT


@TAHSILATREF INT,
@BORC FLOAT,
@ALACAK FLOAT

AS


DECLARE @CNT INT

SELECT @CNT = COUNT( *) FROM dbo.T_TOPLAM WHERE (TAHSILATREF = @TAHSILATREF)
IF ISNULL(@CNT,0) > 0

BEGIN
UPDATE dbo.T_TOPLAM
SET TOPLAMBORC = ISNULL(TOPLAMBORC,0) + @BORC,
TOPLAMALACAK = ISNULL(TOPLAMALACAK,0) + ISNULL(@ALACAK,0)
WHERE (TAHSILATREF =@TAHSILATREF)


END
ELSE
BEGIN
INSERT dbo.T_TOPLAM (TAHSILATREF,TOPLAMBORC,TOPLAMALACAK)
VALUES (@TAHSILATREF,@BORC,@ALACAK)
END
GO

İnsert trigger ise şöyle

CREATE TRIGGER [Tetikle] ON [dbo].[T_TAHSILAT]
FOR INSERT
AS
EXECUTE SPT_TAHSILAT
//Bu şekilde çağrılması doğrumu?

Tabloya yeni kayıt eklemek istediğimde şöyle bir hata alıyorum:

Procedure'SPT_TAHSILAT' expect parameter '@TAHSILATREF' which was not supplied

Sanırım bu işin mantığını tam anlamadım.Yardımcı olursanız sevinirim. :?:
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Gördüğüm kadarıyla EXECUTE SPT_TAHSILAT bu satırın devamında parametreleri geçmeniz lazım.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Mesaj gönderen eyalin »

Merhaba

Parametleri ne şekilde yazabilirim?Örnek verebilirmisiniz... :?:

Teşekkür Ederim
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

MSDN'den EXECUTE (SQL Helpinde) Nasıl kullanılıacağı var,

EXECUTE proc_calculate_taxes @p2 = 'A'
EXECUTE proc_calculate_taxes 69, 'B'
EXECUTE proc_calculate_taxes 69, 'C', 'House'
EXECUTE proc_calculate_taxes @p1 = DEFAULT, @p2 = 'D'
EXECUTE proc_calculate_taxes DEFAULT, @p3 = 'Local', @p2 = 'E'
EXECUTE proc_calculate_taxes 69, 'F', @p3 = DEFAULT
EXECUTE proc_calculate_taxes 95, 'G', DEFAULT
EXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULT
EXECUTE proc_calculate_taxes DEFAULT, 'I', @p3 = DEFAULT
Yukarıdaki alıntı oradan :) Nasıl kullanıldığının örnekleri.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Mesaj gönderen eyalin »

Eve gidince deneyeceğim teşekkürler.
eyalin
Üye
Mesajlar: 126
Kayıt: 09 May 2005 08:08

Mesaj gönderen eyalin »

Şu şekilde çalıştı:


CREATE TRIGGER [Tetikle] ON [dbo].[T_TAHSILAT]
FOR INSERT
AS

DECLARE @TAHSILATREF INT
DECLARE @TOPLAMBORC FLOAT
DECLARE @TOPLAMALACAK FLOAT

SELECT @TAHSILATREF = KOMISYONREF,@TOPLAMBORC=BORC,@TOPLAMALACAK = ALACAK
FROM INSERTED

EXEC dbo.SPT_TAHSILAT @TAHSILATREF,@TOPLAMBORC,@TOPLAMALACAK



Yardımlarınız İçin Teşekkürler Arkadaşlar... :lol:
Cevapla