SQL Server Management Studio’da Stored(Kayıtlı) Bir Procedure Nasıl Oluşturulur
Bu makalede, SQL stored procedure yada diğer ifade ile saklı yordamı, SQL Server Management Studio’da (SSMS) bir saklı yordamın nasıl oluşturulacağını öğreneceksiniz.
Bu makale aşağıdaki soruların cevaplarını kapsar:
- SQL stored procedure nedir?
- SET NOCOUNT ON cihazını neden SQL stored procedurede kullanıyoruz?
- Kaç türSQL stored procedure var?
- SQL Server’da yorumlar nasıl yazılır?
- SQL stored procedure için adlandırma kuralları nelerdir?
- SELECT SQL sorgusu kullanarak bir veritabanı sekmesinden veri seçmek için saklı bir prosedür nasıl oluşturulur?
- SQL Server’da saklı yordamlar nasıl yürütülür?
- Saklı yordamlardaki parametreler nedir?
- SELECT sorgusu saklı yordamında, geçirilen parametreye göre kayıtları döndüren parametreler nasıl oluşturulur?
- Saklı yordam tabanlı bir INSERT sorgu oluşturmak nasıl?
- Bir UPDATE sorgusu tabanlı saklı yordam nasıl oluşturulur?
- DELETE sorgusu kullanarak kayıtları silmek için saklı bir yordam nasıl oluşturulur?
Stored Procedure Nedir?
Bir SQL stored procedure (saklı yordam) (SP), derlenmiş ve veritabanında depolanan bir SQL deyimleri ve sql komut mantığı koleksiyonudur. SQL’deki saklı yordamlar, sunucuda depolanıp çalıştırılacak SQL sorguları oluşturmamızı sağlar. Saklanan prosedürler de önbelleğe alınabilir ve tekrar kullanılabilir. Doğrudan SQL sorgularını koddan gizlemek ve veri seçme, güncelleme ve silme gibi veritabanı işlemlerinin performansını iyileştirmek saklı yordamların genel amacıdır.
SET NOCOUNT ON ifadesini neden saklı bir prosedürde kullanıyoruz?
SET NOCOUNT ON ayarını yaparken, etkilenen satır sayısını gösteren hiçbir mesaj olmadığı anlamına gelir.
NOCOUNT, ON olduğunda sayma anlamına gelir.
SET NOCOUNT OFF olduğunda ne olduğunu şimdi öğreneceksiniz.
Saklı işlem türleri
SQL Server’da kullanılabilen iki tür saklı yordam vardır:
- Kullanıcı tanımlı saklı yordamlar
- Sistem saklı yordamlar
Kullanıcı tanımlı saklı yordamlar
Kullanıcı tanımlı saklı yordamlar, veritabanı geliştiricileri veya veritabanı yöneticileri tarafından oluşturulur. Bu SP’ler, veritabanı tablolarından kayıtları seçmek, güncellemek veya silmek için bir tane daha SQL ifadesi içerir. Kullanıcı tanımlı saklı yordam, giriş parametrelerini alabilir ve çıkış parametrelerini döndürür. Kullanıcı tanımlı saklı yordam DDL (Veri Tanım Dili) ve DML (Veri İşleme Dili) komutlarının karışımıdır.
Kullanıcı tanımlı SP’ler ayrıca iki türe ayrılır:
T-SQL saklı yordamları: T-SQL (Transact SQL) SP’leri parametreleri alır ve döndürür. Bu SP’ler parametreleri olan veya olmayan sorguları Ekleme, Güncelleme ve Silme işlemlerini yapar ve satır verilerini çıktı olarak döndürür. Bu, SP’leri SQL Server’da yazmak için en yaygın yollardan biridir.
CLR saklı yordamları: CLR (Ortak Dil Çalışma Zamanı) SP’ler, C# veya VB.NET gibi bir CLR tabanlı programlama dilinde yazılır ve .NET Framework tarafından yürütülür.
Sistem saklı yordamları
Sistem saklı yordamları, sunucu yönetim faaliyetleri için SQL Server tarafından oluşturulur ve yürütülür. Geliştiriciler genellikle sistem SP’lerine müdahale etmez.
SQL Server veritabanına giriş
SQL Server veritabanımıza giriş yapalım, böylece aşağıdakileri başarabiliriz:
- Tüm kayıtları döndüren SELECT QUERY tabanlı bir saklı yordam nasıl oluşturulur?
- Parametrelere dayanarak kayıtları döndüren PARAMETER tabanlı bir SELECT QUERY saklı yordamı nasıl oluşturulur?
- Saklı yordam tabanlı bir INSERT sorgu oluşturmak nasıl?
- Bir UPDATE sorgusu tabanlı saklı yordam nasıl oluşturulur?
- Bir DELETE sorgusu tabanlı saklı yordam nasıl oluşturulur?
SQL SERVER’a giriş yaptıntan sonra. İlgili veritabanı seçip aşağıdaki gibi saklı yordam oluşturuyoruz.
SQL Server tarafından bir SP için oluşturulan boş şablon aşağıdakine benzer. CREATE PROCEDURE SQL komutu bir prosedür oluşturmak için kullanılır, ardından SP adı ve parametreleri kullanılır. BEGIN ve END alanı, işlemin sorgusunu tanımlamak için kullanılır. Sorguları select, update, insert, ve delete işlemlerinin bulunduğu yerdir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | -- ================================================ -- 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 |
SQL SERVER içine nasıl yorum yazılır?
Sql sunucusunda aşağıdaki şekillerde yorum yapabilirsiniz,
- – tek bir yorum satırı için (iki tire / kısa çizgi).
- ile başla /* ……. çok satırlı yorumlar için */ ile bitirin.
Saklı yordamlar için adlandırma kuralı nedir?
Projenize ve kodlama politikalarınıza bağlı olabilecek standart adlandırma kurallarına uymalıyız.
Kullanıcı tanımlı saklı yordam adlandırma kuralları için önerilerim, SP adlarınıza aşağıdaki ön eklerden birini eklemektir.
- sp
- stp
- stp_
- udstp
- udstp_
Adlandırma kuralları, yalnızca nesneleri tanımlamak içindir. Bu önekleri adına ekleyerek bu nesnenin saklı bir prosedür olduğunu açıkça tespit edebiliriz.
Bir veritabanı tablosu oluşturun
Daha önce herhangi bir SP oluşturup çalıştırabilmek için bir veritabanı tablosuna ihtiyacımız var. Aşağıdaki SQL sorgusunu kullanarak “tblUyeler” adlı bir veritabanı tablosu oluşturup sunucuda çalıştırıyorum. Gördüğünüz gibi, tablomun 3 sütunu var. Tablo oluşturulduktan sonra, SSMS’nizde tabloyu açın ve verileri tabloya elle girerek bazı veriler ekleyin.
1 2 3 4 5 6 7 | CREATE TABLE [dbo].[tblUyeler]( [UyeID] [int] IDENTITY(1,1) NOT NULL, [UyeAdi] [varchar](50) NULL, [UyeSehri] [varchar](25) NULL ) |
Kayıt ekleme
1 2 3 4 5 6 7 | INSERT INTO tblUyeler Values ('Ahmet','Konya'), ('Hayri','Edirne'), ('Hüseyin','Kastamonu'), ('Egün','Kars'); |
SELECT saklı yordamı nasıl oluşturulur?
Veritabanınıza tıklayın ve “Programmability” öğesini genişletin ve “Stored Procedures” üzerine sağ tıklayın veya yeni sorgu penceresi almak için CTRL + N tuşlarına basın. BEGIN ve END arasındaki sorgu alanına tablodan kayıtları seçmek için SELECT ifadenizi yazın. Aşağıdaki koddaki Select ifadesine bakın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE stpTumUyeler AS BEGIN SET NOCOUNT ON; Select * from tblUyeler END GO |
Şimdi, F5’e basın veya SP’yi yürütmek için Yürüt düğmesine tıklayın.
“Command(s) completed successfully. mesajını görmelisiniz.
Şimdi Programmability –>Stored Procedures’e, Sağ Tıklayın ve Yenile’yi seçin.
Aşağıdaki resimde görebilirsiniz, stpTumUyeler adlı yeni SP oluşturulur.
SQL Server’da saklı yordamları yürütün
Alternatif olarak, Sorgu penceresinden bir SP de çalıştırabilirsiniz.
Saklı yordamı SQL Server Management Studio’da çalıştırmak için yeni bir sorgu penceresi açmak ve aşağıdaki komutu yazın, sorgu penceresine veya CTRL + N’ye geçin.
Sözdizimi – EXEC <saklı yordam adı>
Örnek – EXEC stpTumUyeler
Şimdi stpTumUyeler adlı saklı yordamımızı çalıştırıyoruz. Çıktı aşağıdaki gibi görünüyor:
SQL
1 2 3 | EXEC stpTumUyeler |
Nasıl Saklı yordam tabanlı bir INSERT sorgusu oluşturulur?
Bir tabloya veri eklemek için INSERT INTO SQL sorgusu kullanabiliriz. Aşağıdaki SQL ifadesi, üç parametreli bir INSERT SP oluşturur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CREATE PROCEDURE stpInsertUye @UyeAdi varchar(50), @UyeSehri varchar(25) AS BEGIN SET NOCOUNT ON; Insert Into tblUyeler (UyeAdi,UyeSehri) Values (@UyeAdi,@UyeSehri) END GO |
Object Explorer’da saklı yordama sağ tıklayın ve Refresh’i seçin.
Çalıştır iletişim kutusunda parametrenin değerini iletin.
SQL Sorgusu ile procedurü çalıştırmak için aşağıdaki sorguyu kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 | DECLARE @donus_degeri int EXEC @donus_degeri = [dbo].[stpInsertUye] @UyeAdi = N'Hayri', @UyeSehri = N'Ankara'; SELECT 'Return Value' = @donus_degeri ; GO |
Tablodaki kayıtları görmek için daha önce oluşturulan saklı yordamı yada SELECT sorgusunu çalıştırabilirsiniz.
1 2 3 | EXEC stpTumUyeler |
1 2 3 4 | SELECT * FROM tblUyeler; GO |
Yukarıdaki ifadelerden her hangi biri çalıştırıldığında çıktı aşağıdaki gibi görünecektir.
Yorum Yap