SQL Server’da Geçici Stored Prosedürler
Herkese merhaba. Bu yazıda SQL Server’da geçici stored prosedürler hakkında bilgi vereceğim.
Bazılarınızın geçici stored prosedürde nedir ya da geçici stored prosedürde mi varmış dediğini duyar gibiyim.
Aslına bakarsanız proje içinde hiç kullanmadım fakat konu hakkında bilginiz olması açısından böyle bir yazıyı yazmak istedim.
Geçici stored prosedürlerin çalışma prensibi geçici tabloların çalışma şekline çok benzer. Lokal ve global geçici stored prosedürler oluşturabilirsiniz.
Lokal geçici stored prosedürlerin kapsamı, onu oluşturan bağlantıyla sınırlıdır. Bağlantı kapandığında prosedür kaldırılmış olur. Global geçici stored prosedürler işlem var olduğu sürece tüm SQL Server bağlantıları tarafından kullanılabilir. Prosedürü kullanan son bağlantı kapatıldığında, prosedür kaldırılır.
Geçici tablolar gibi geçici stored prosedürler de TempDB veritabanında oluşturulur.
Lokal geçici stored prosedür oluşturmak için stored prosedür adından önce (#) işareti kullanmanız gerekir. Global geçici stored prosedür oluşturmak için, prosedür adı öncesinde iki adet (#) işareti kullanmanız gerekir. Geçici stored prosedür adı, genel geçici stored prosedürler için 128 karakteri (## dahil) ve lokal geçici stored prosedür için 116 karakteri (# dahil) aşamaz.
Aşağıdaki örnek kullanımları inceleyebilirsiniz.
-- Lokal geçici stored prosedür oluşturmak
CREATE PROCEDURE #Temp_Lokal
AS
SELECT @@spid;
-- Global geçici stored prosedür oluşturmak
CREATE PROCEDURE ##Temp_Global
AS
SELECT @@spid;
--Çalıştırılması
EXEC #Temp_Lokal;
EXEC ##Temp_Global;
Yukarıdaki kodları seçtiğiniz veritabanı üzerinde oluşturup çalıştırdığınız zaman aşağıdaki gibi bir sonuç alacaksınız.
İnternette çeşitli yazılarda, yorumlarda geçici stored prosedürlerin kullanılması gerekip gerekmediği konusunda farklı fikirler bulabilirsiniz. Bazı insanlar, kalıcı stored prosedürlerin yeterli olmayacağı bir kullanım durumunun olmadığını söylerler.
Aslına bakarsanız geçici stored prosedürler kalıcı, gereksiz nesneler oluşturmak istenmediği durumlarda çok kullanışlı olabilir.
- Bazı işlemleri test etmek ve çözüm önerilerini denemek için.
- Hedef veritabanını etkilemek istemediğimiz durumlarda kullanılabilir.
Umarım faydalı bir yazı olmuştur.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.