SQL PROCEDURE MACERASI -5

Standart düzenlerde bunlar için ayrı ayrı bağlantı nesneleri yaratılır, tablonun bir tanesine kayıt yapılır sonra o kayıt tablodan

tekrar okunur ve alınan ID bilgisi diğer bir tabloyu çapraz olarak bağlamak üzere farklı bir alana kayıt edilir…

Sözel olarak özet geçmek istediğimde bile kafam karışıyor J programsal kısmını düşünmek bile istemiyorum. Haydi, bu kadar uzun

kodu yazdım diyelim o zaman da programın performansı ne kadar düşer tahmini bile zor J

O zaman bu tarz bir kodu STORED PROCEDURE ile yazmak istediğimizde bakın neler oluyor.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
— =============================================
— Author: Burak SEKERCIOGLU
— Create date: 12/05/2011
— Description: SP TEST-5
— =============================================
CREATE PROCEDURE sp_test (@kod1 int, @kod2 int)
AS
Declare @tablo1ID int
BEGIN
SET NOCOUNT ON;
if @kod1=1
begin
if not exist (select * from test_tablomuz Where alan1=@kod1 and alan2=@kod2)
begin
Insert into test_tablomuz (alan1,alan2) values (@kod1,@kod2)
set @tablo1ID=SCOPE_IDENTITY()
Insert into ikincitablo (tablo1id,alan1) values (@tablo1ID,@kod1)
End
Else
Begin
Print ‘TEST_TABLOMUZ tablosunda aynı kayıt var’
End
end
if @kod1=2
begin
if not exist (select * from test_tablomuz2 Where alan1=@kod1 and alan2=@kod2)
begin
Insert into test_tablomuz2 (alan1,alan2) values (@kod1,@kod2)
end
Else
Begin
Print ‘TEST_TABLOMUZ2 tablosunda aynı kayıt var’
End
end
END
GO

Yukarıdaki prosedürümüzde, öncekilere ek olarak

set @tablo1ID=SCOPE_IDENTITY()
Insert into ikincitablo (tablo1id,alan1) values (@tablo1ID,@kod1)

Satırları ile @tablo1ID değişkeninin tanımlandığı Declare @tablo1ID int Satırı eklendi.
Bu kodlarda ne anlatmak istedik, bakalım;

Declare @tablo1ID int
İle prosedürümüz içersinde @tablo1ID isimli bir değişkene INTEGER veri atayacağımızı söyledik.
Insert into test_tablomuz (alan1,alan2) values (@kod1,@kod2)
Test_tablomuz üzerine @kod1 ve @kod2 değişkenlerine atanan parametrik verileri kaydettik
set @tablo1ID=SCOPE_IDENTITY()
SCOPE_IDENTITY () fonksyionu ile Test_tablomuz üzerine kayıt ettiğimiz son verinin PRIMARY KEY (ID) değerini aldık ve

@tablo1ID değişkenine yükledik.
Insert into ikincitablo (tablo1id,alan1) values (@tablo1ID,@kod1)

Tanımlanan @tablo1ID değişkeni ikincitablo üzerinde ilgili kolona eklendi.

Umarım şu ana kadar anlaşılmayan bir şey yoktur. 🙂

Devamı SQL Procedure Macerası -6