Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Stored Procedure (MSSQL)  (Okunma sayısı 3883 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Stored Procedure (MSSQL)
« : 10 Ekim 2005 11:58:36 »
Transact-SQL (T-SQL) Stored Procedure, Microsoft SQL Server üzerinde barındırılan, T-SQL komutları ile hazırladığınız işlemler bütününün çalıştırılma anında derlenmesi ile size bir sonuç üreten SQL Server bileşenidir.



SQL Server üzerinde sadece tablolarımızı barındırmadığımızı biliyoruz. View, trigger, stored procedure,vs özellikleri ile uygulamamıza performans katmak ve uygulama içinde yazdığımız kod satır sayısını azaltarak zamandan tasarruf etmek bize sağladığı diğer yararlardan.



"Stored Procedure Neden Kullanılmalı?" gibi bir sorunun cevabını şu şekilde verebiliriz. (Bu aynı zamanda Stored Procedure lerin faydaları başlığınıda alacaktır :) )



- Çalışma anı planlama sağlar ve tekrar tekrar kullanılabilir

- Query lerinize otomatik parametrelendirme getirir

- Uygulamalar arasında ortak kullanılabilir yapıdadır

- Güvenli data modifikasyonu sağlar

- Network bandwidth inden tasaruuf sağlar (daha az network bandwidth kaynak kullanımı)

- Zamanlanmış görevlere eklenebilir

- Job olarak tanımlanabilir ve schedule edilebilir

- Database objelerine güvenli erişim olanağı tanır



Tüm bu faydalardan bir tanesi bile ilginizi çektiyse bu yazı ve devamındakileri takip etmenizi öneririm. Birazdan verilecek örnekler sıfırdan stored procedure anlatımı kapsamına girmek ile beraber tüm t-sql komutlarının detay açıklamasına yer verilemeyecektir. Genel geçer kurallar dahilinde genel kullanımlı stored procedure örnekleri verilecektir.



Sql Server da yeni bir database yarattığınızda ms sql kullanmanız gerekebilecek tüm tool ları gruplar. Stored Procedure ler de bu gruplar altında yerini almıştır. Yeni bir Stored Procedure yaratmak için önce console root dan "Stored Procedure" tabına geçmeli ve ekranın sağında mouse unuzun sağ tuşuna tıklayarak "New Stored Procedure" menüsünü seçmeniz yeterlidir.



Karşınıza MS SQL Server'ın Stored Procedure yazmanız için oluşturduğu editör çıkacaktır. Bu editörün bana göre en büyük faydası "Check Syntax" butonu ile yazdığınız Stored Procedure'un syntax ını kontrol edebiliyor olmanızdır.



Bu ekranda "OWNER" alanına kullanacağınız database in yetkili kullanıcı ismini yazmalısınız. Bu lokal bilgisayarlar için genel olarak "dbo" seçilmesi anlamına gelir. "PROCEDURE NAME" kısmına ise klasik tablo adı, değişken adı gibi özel isimlerde uymanız gereken kurallara uymak suretiyle (boşluk bırakılmaması gibi) yazacağınız procedure vereceğiniz ismi yazacaksınız.



Şimdi basit bir procedure yazalım. Bu procedure ü sizin de test edebilmeniz için SQL Server ile beraber gelen Northwind database ini kullanacağım. Yazacağımız stored procedure Customers tablosundaki şehir isimlerini ve bu şehirlerde kayıtlı satıcı sayılarını veren özellikte olacak.



Kod: SQL
  1. CREATE PROCEDURE [dbo].[test4]
  2.  
  3. @Country nvarchar(30)='%'
  4.  
  5. AS
  6.  
  7. SELECT City, COUNT(*) AS NumberOfCustomers
  8.  
  9. FROM Customers
  10.  
  11. WHERE Country LIKE @Country
  12.  
  13. GROUP BY City
  14.  
  15. GO




Şimdi syntax ı biraz inceleyelim:



- CREATE PROCEDURE [dbo].[test4]

T-SQL'in stored procedure yaratmak için bize verdiği "Create Procedure" komutunu kullanarak yeni bir stored procedure yaratmak istediğimizi belirtiyoruz. "dbo" kullanacağımız yetkili kullanıcı adını, "test" ise yaratacağımız Stored Procedure e vereceğimiz ismi belirtiyor.



Kod: SQL
  1. - @Country nvarchar(30)='%'


Country adında bir değişken yaratıyoruz. Değişkenimiz "nvarchar" tipinde ve 30 byte boyutunda. '' içinde belirttiğimiz değer ise bu değişkene T-SQL içinden atadığımız değişkeni anlatıyor.



Kod: SQL
  1. - SELECT City, COUNT(*) AS NumberOfCustomers
  2.  
  3. FROM Customers
  4.  
  5. WHERE Country LIKE @Country
  6.  
  7. GROUP BY City


Klasik bir select cümlesi. Tek fark burada where koşulu içinde querystring, session veya formdan gelen bir bilgiyi değil bir stored procedure paramatresini kullandık.



- GO

Stored procedure ün her gerçekleştirmesi gereken işlemden sonra bir önceki komut dizisini çalıştırması için eklediğimiz T-SQL komutu



Bu stored procedure ü herhangi bir desktop program veya web uygulamasından çağırabiliriz ve hatta mobil uygulamalardan. Ancak yazdığımızda hemen ne tür bir veri döndüreceğini test etmek isteyebiliriz. Bu amaçla Sql Server Query Analizer i kullanacağız. Query Analzer da stored procedure leri çalıştırmak için "exec procedure_adi" syntax ını kullanıyoruz. Bakalım az önce Northwind database i için yazdığımız Stored Procedure bize nasıl bir veri kümesi geri döndürecek.



Şimdi yeni bir örnek yapalım. Bu sefer konumuz database imizde yeni bir tablo yaratmak olsun.



Kod: SQL
  1. CREATE PROCEDURE [dbo].[test3]
  2.  
  3. AS
  4.  
  5.  
  6.  
  7. CREATE TABLE Northwind..TESTTABLO1(k1 INT IDENTITY, c1 varchar(2))
  8.  
  9. GO




Kod: SQL
  1. -CREATE TABLE Northwind..TESTTABLO1(k1 INT IDENTITY, c1 varchar(2))


"create Table" komutunu kullanarak yeni bir tablo yaratacağımızı belirttik. "NorthWind..TESTTABLO1" sözdizimini kullanmamızın nedeni TESTTABLO1 için NorthWind database ini referans göstermemiz.



Bu procedure müzü çalıştırdığımızda bize bir sonuç yerine bir durum geri döndürecektir. Yani karşımıza grid de listelenebilecek bir veri çıkamayacak sadece "The command(s) completed successfully." O.K. mesajı ile karşılaşacağız. Ve elbette yapmaya çalıştığımız şey yani yeni bir tablo yaratma işlemi olumlu sonuçlanmış olacak.



Kod: SQL
  1. < = id=takvim name=takvim ="if &#40;!Validator&#40;&#41;&#41; return false;" =http&#58;//www.maxiasp.net/ders.aspx?dno=157 method=post>  


 



Bir diğer örneğimiz az önceki eklediğimiz kaydı update etmek ile alakalı olacak. Az önce "ev" değerini girdiğimiz alanı "ve" şekline çevirelim:



Kod: SQL
  1. CREATE PROCEDURE &#91;dbo&#93;.&#91;test1&#93;
  2.  
  3. @degistir1 varchar&#40;2&#41; = 'ev',
  4.  
  5. @degistir2 varchar&#40;2&#41; = 've'
  6.  
  7. AS
  8.  
  9. UPDATE TESTTABLO1 SET c1 = @degistir2 WHERE c1 = @degistir1
  10.  
  11. GO


Kod: SQL
  1. - @degistir1 varchar&#40;2&#41; = 'ev'


Update Sql'imizde kullanacağımız where koşulu için değişkenimizi tanımlıyoruz



Kod: SQL
  1. - @degistir2 varchar&#40;2&#41; = 've'


Yeni bir değişken yaratıp update edeceğimiz veriyi kod içinden tanımlıyoruz



Kod: SQL
  1. - UPDATE TESTTABLO1 SET c1 = @degistir2 WHERE c1 = @degistir1


Klasik update sql cümlemiz ile c1 alanı @degistir1 olan kayıtları @degistir2 ile update ediyoruz



Kod: SQL
  1. < = id=takvim name=takvim ="if &#40;!Validator&#40;&#41;&#41; return false;" =http&#58;//www.maxiasp.net/ders.aspx?dno=157 method=post>
 



kaynak : www.maxiasp.net
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.