SQL PROCEDURE MACERASI -8

Elimizde 3 farklı tablomuz olsun ve bu tablolardan 1 tane kayıt silinmek istendiğinde diğer 2 tablodaki ilişkili alanlarda silinsin ve yapılan işlemler bir log tablosunda kayıt altına alınsın. Eğer silinmek istenen kayıt 1. Tabloda yoksa hata kodu hatakod=0 olsun eğer kayıtlar başarılı olarak silinmiş ise de hatakod=1 olarak programa gelsin.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
— =============================================
— Author:        Burak SEKERCIOGLU
— Create date: 12/05/2011
— Description:   SP TEST-8
— =============================================
Create proc [sp_test] (
@kullanici nvarchar(max),
@domain nvarchar(max),
@org_id int
)
AS
declare @hatakod int
begin /*basla*/
if not @org_id=0
begin
IF EXISTS (select id from etkinlik WHERE id=@org_id)
begin
DELETE FROM ajanda WHERE  org_id=@org_id
DELETE FROM etkinlik WHERE id=@org_id
DELETE FROM materyal WHERE org_id=@org_id
execute sp_log @kullanici,@domain, ‘Etkinlik Silindi’
set @hatakod=0 /* Etkinlik Yok */
return @hatakod
end
else
begin
set @hatakod=1 /* Etkinlik Silindi*/
return @hatakod
end
end
/* Son */
end

Nasıl oldukça kolay oluyor değil mi?

Peki dikkatinizi bir şey çekti mi? Mevcut prosedürümüz içinden farklı bir prosedüre atıfta bulunduk ve mevcut prosedürün

parametreleri ile

execute sp_log @kullanici,@domain, ‘Etkinlik Silindi’

Diğer prosedürü de çalıştırdık. Bu sayede uzun uzadıya prosedürler yazmak yerine ortak kullanımdaki prosedür ile işlem loglarını sisteme kaydettik.

Devamı SQL Procedure Macerası -9