11 Aralık 2009 Cuma

SQL Server ile Stored Procedure

Stored Procedure Nedir?

Stored Procedure aslına bakıcak olursak kendi database server'da saklanan SQL ifadeleri olarak düşünebilir. Bir programlama dilinde fonksiyonların parametre alması gibi, stored procedureler de parametre alabilir. Bu parametrelerle bir sorgu çalıştırıp cevap geri gönderebilirler.

Stored Procedure'un diğer bir özelleği ise programlama deyimleri içermesidir. Yani İf, next ve benzeri ifaderi stored procedurelerde kullanıp, mantıksal denetimleri gerçekleştirip, geriye sonuçları dönebilirsiniz. Biraz önce açıkladığım gibi stored procedure parametre aldığı için girilen değerlere göre sonuçta dönebilirsiniz.

Stored procedureler database serverda saklanmasından dolayı daha hızlı çalışırlar. Bunun nedeni bir stored procedure ilk çalışma anında derlenir ve sonraki çalışma anlarında bir daha derlenmez.

Yani bir program içerisinden SQL ifademizle servere bağlanıp ifadenin sonucunu programımıza çekerken database bir daha derlenir. Aynı işlemi bir daha yaptığımızda SQL server da database bir daha derlenir. Tabii ki bu zaman kaybına neden olur.

Bazı programcılar SQL ifadesi yazmak yerine devamlı stored procedure yazar, bazılarıda hiç kullanmaz. Ben hiç kullanmayanlardanım. =)


SQL Serverda Stored Procedure Oluşturmak

SQL serverda veritabanı oluşturduğumuz zaman stored procedure oluşturmak için Stored Procedures klasöründen oluşturabiliriz. Klasöre sağ tıklayarak yeni bir stored procedure oluştur demeniz yeterli olcak...

CREATE PROCEDURE CustOrderHist @CustomerID nchar(5)

AS

SELECT ProductName, Total=SUM(Quantity)FROM Products P, [Order Details] OD, Orders O, Customers CWHERE C.CustomerID = @CustomerIDAND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID = P.ProductID

GROUP BY ProductName

Örneğimizde Create Procedure diyerek bir procedure oluş komutu vermiş oluyoruz. Daha sonra procedure ismimizi veriyoruz. Kullanacağımız parametrik ifadeyi AS ve Create Procedure ifadelerinin arasına yazıyoruz. Dikkat edersek parametrik ifadenin veri tipini isminden sonra yazıyoruz. AS kelimesinden sonra gerekli olan sql ifademinizi giriyoruz ve işlem tamamlanıyor.

Peki bu kadar mı?

Tabii ki hayır. Procedure derlenmedi. Şuan sadece havaya yazı yazmış gibi bir şey yapmış oluyoruz.

exec CustOrderHist yazarak procedure derlenmiş oluyor.

Şimdi stored procedures klasörümüzü yenilersek CustOrderHist adında nur topu gibi bir sp miz oldu. Üzerinde bir değişiklik yapmamız için çift tıklayıp açın değişikliğinizi yapın ve tekrar exec ile derleyin bu kadar... Kolay gelsin.

Hiç yorum yok:

Yorum Gönder