Stored Procedures

Sunucuda derlenmiş olarak saklanan SQL scriptlerine “Stored Procedure” ismi verilir. SP ‘ler sunucu içerisinde derlenmiş olarak saklanırlar. SQL üzerindeki yazılmış programlar da burada çalıştırılır.

Programlama hayatımızda çok kullanacağımız kısım “User Defined Stored Procedure“, başlığa gitmek için tıklayın.

4 çeşit SP vardır. Bunlar;

1 – System Defined Stored Procedure
2 – Extended Procedure
3 – User Defined Stored Procedure
4 – CLR Stored Procedure

1 – System Defined Stored Procedures

SQL server programında yani sunucunun kendisinde hazır olarak gelen SP’lerdir.

Çok kullanılanlarından bazıları:

sp_rename: Stored procedure, view, table gibi yapıların ismini değiştirmek için kullanılı.

sp_changeowner: Bir veritabanın yetkilisini değiştirmek için kullanılır.

sp_helpdb: SQL sunucusunun desteklediği komutları gösterir.

sp_helptext: Sunucudaki bir SP metnini döndürür.

sp_depends: Bir veri tabanı objesine bağlı olan diğer tüm objeleri döndürür.
Kullanılışı:

GO
EXEC sp_depends @objname = N'dbo.DummyTable';

2 – Extended Procedure

Sunucu üzerinde yapılan işlemleri kaydetmek için kullanılır. İsimlerinin başına “xp_”ön ekini alır.

Aşağıdaki örnekte kullanıcı tarafında kullanıcıya herhangi bir hata/uyarı/bilgi vermeden sunucu üzerinde yapılan erişim isteğini kaydeder.

declare @logmsg varchar(100)
set @logmsg = suser_sname() + ' isimli kullanıcı .net sistemine erişmeye çalıştı.'
exec xp_logevent 50005, @logmsg
print @logmsg

Alttaki örnek ise sistemin hazır prosedürü olan kullanıcı giriş bilgilerini çağırır.

EXEC xp_logininfo 'BUILTIN\Administrators'

3 – User Defined Stored Procedure

Şablon olarak SQL Management studio aşağıdaki gibi satırları sunar.

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
	-- Add the parameters for the stored procedure here
	<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
	<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO
CREATE PROCEDURE SelectAllCustomers
@City nvarchar(30)
AS
SELECT * FROM Customers WHERE City = @City
GO;

Şeklinde de hazırlanışı vardır. Buradaki 3. satırdaki @City bizim DB tarafına gönderdiğimiz değişkendir. Bu değişkeni sorgu içinde kullanırız ve DB sunucusu bize liste halinde işlenmiş veri döndürür.

tüm liste içinde sayma işlemi gibi çok veri işlenecek işlem yapılacaksa tüm listeyi çekmeden kendi içinde işlem yapıp sadece sonucu döndürerek hem veri trafiğinden hem de işlem gücünden tasarruf sağlaması,

“Stored Procedure” ‘un en büyük 2 avantajından biri,

hem gönderilen sorgunun kısa olması, hem verinin sunucu tarafında işlenmesi hem de dönen veri tüm veritabanına göre daha az olduğu için trafiği kullanmamasıdır,

diğeri ise belirlenen sorgular haricinde sorgu yapılamamasından güvenliğinin üst düzeyde olmasıdır.

Sunucu içinde örnek olarak çalıştırmak isterseniz kullanılışı aşağıdaki gibidir. EXEC [SP Adı] [değişken1], …

EXEC SelectAllCustomers @City = "London";

Eğer “Stored Procedure” ‘u yazıp kaydettikten sonra çalıştırmak isterseniz (bu arada kaydetmek için ctrl+s değil de oynat tuşunu (SQL Man. için alt+x) kullanmanız gerekiyor) 21. satırdaki CREATE yerine ALTER yazmanız gerekiyor.

4 – CLR Stored Procedure

Yazı oluşturuldu 38

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön