STORED PROCEDURES etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
STORED PROCEDURES etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Ağustos 2012 Pazar

SQL Server'da Stored Procedure

  • SQL ifadeleri SQL Serverda Stored Procedure olarak saklanmaktadır. 
  • Basit örneklemek gerekirse " SELECT * FROM Birds " ifadesini saklayabiliriz. Ama büyük yapılarda kullanılan Stored Procedureler daha komplekstir. 
  • Stored Procedure'ler birden fazla tablonun farklı JOIN işlemleri ile bağlanmasıyla ve parametreli veya parametresiz değerlerin WHERE koşullarıyla kısıtlanmasıyla istenilen sonuça hızlı ve sade bir şekilde ulaşmamızı sağlar.

ÖRNEK:
CREATE PROCEDURE Person_Selection
@yas INT

AS

IF(Yas> 19)
SELECT * FROM Person WHERE Yas > @yas ORDER BY Yas
ELSE
SELECT * FROM Person WHERE Yas> @yas and Eriskin=1 ORDER BY Yas

GO

11 Ağustos 2012 Cumartesi

Stored Procedure Tipleri ve Genel Yapısı

     1-) Stored Procedure Tipleri

  • Extended Stored Procedure :  Genellikle *.dll şeklinde derlenmiş prosedürlerdir.
  • CLR Stored Procedure : SQL Server 2005’den itibaren CLR ortamındaki herhangi bir dili kullanarak kodladığımız stored procedure’lerdir.
  • Sistem Stored Procedure : Genellikle sp_ ön eki ile başlarlar ve hepsi master veri tabanında tutulan stored procedure'ler.
  • Kullanıcı Tanımlı Stored Procedure : Programcının yani bizim programladığımız stored procedure'lerdir.

     2-) Stored Procedure'lerin Genel Yapısı

CREATE  PROCEDURE or CREATE PROC  prosedür_adı
[ WITH Seçenekleri ]
AS
               SQL ifadeleri
GO




Açıklama:  Yukarıda gördüğümüz gibi Create Proc veya Create Procedure deyimi ile başlıyoruz ve prosedürümüzün ismini yazıyoruz. WITH seçeneği ile Stored procedure de bulunan kaynak kodlarını gizlemek için kullanıyoruz. WITH kullanımı zorunlu değildir.Create Procedure ile AS deyimleri arasına parametreli stored prosedürler için değişken tanımlaması yapılır. Örnek olarak ' @ogrencino int ' gibi...  Parametresiz prosedürler için herhangi bir tanımlama yapılmaz, AS yazılarak devam edilir. AS’den sonra prosedürün içine yazacağımız SQL ifadelerini yazarız ve GO deyimini de ekleyerek prosedürümüzü tamamlamış oluruz.

Not: GO deyimi zorunlu değildir ama programı ciddi hatalardan kurtarmaktadır.

Daha sonra Procedure 1 kere çalıştırmanız (F5) yapmanız yeterlidir. Stored Procedure'ümüzü tekrar çağırmak istediğimizde aşağıdaki komutu çalıştırmamız yeterlidir.

         EXEC prosedür_adı  


Stored Procedure'ler SQL Serverda aşağıdaki konumda bulunmaktadır.




21 Temmuz 2012 Cumartesi

Stored Procedure Nedir?

  • Yapısal yordamlar olarak da söylenen Stored Procedures belirli bir işlevi, görevi yerine getirmek için özellilkle yapılandırlımış bir veya birden fazla tablo,sp..vs ile ilişkili kod parçacıklarıdır.
  • Kısaca 'Derlenmiş SQL Cümlecikler'dir.
  • SP'ler Database Serverda saklanan SQL ifadeleridir. Diğer programlama dilleri gibi parameterler içerir. Bu parametrelere göre çalışıp farklı sonuçlar listeleyebilir.
  • Ayrıca bir Stored Procedure içinde başka bir Stored Procedure çağırabiliriz.
  • Datebase Serverda saklandıkları için daha hızlı çalışırlar. Normal kod ile çağırmak yerine kodla sadece SP ye parametre gönderip çağırmak çok daha iyi performans sağlamaktadır.
  • SP ler sadece ilk çalıştırıldıklarında derlenirler. Diğer çağrılışlarında derlenmeden çalışırlar. Eğer her seferinde kod içinde bu sorguyu çalıştırsak her seferinde derleme işlemi yapılacağından hem zaman hem de performans açısından kötü olur.
  • Bir SQL komutu çağrıldığında ayrıştırma , derleme ve çalıştırma aşamalarından geçmektedir. SP’ler önceden derlenmiş olduğu için , normal kullandığımız bir SQL sorgusunda olduğu gibi bu 3 aşamadan geçmez, bu özelliği sayesinde programımızın performansı artmaktadır ve ağ trafiğini de azaltmış oluruz, istemci tarafından bir çok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi ağı daha az meşgul etmiş olur. Bir kez yazıp tekrar ve tekrar kullandığımız için modüler bir yapıda program geliştirmiş oluruz.
  • Stored procedure'un diğer bir özelliği ise programlama deyimleri içermesidir. if, next, set vs.. programlama dillerindekine benzer özellikler sunar. Gelen parametrelere göre sorgu yapılıp sonucun dönmesi sağlanabilir. 
  • Eğer veritabanlı bir projede çalışıyorsanız kesinlikle SP ler ile çalışmalısınız. Çoğu programcı programlarının hiç bir yerinde SQL ifadesi kullanmazlar. Her zaman Stored Procedure ler ile çalışırlar.

25 Mayıs 2012 Cuma

34. SUBQUERIES (ALT SORGULAR)

  • Kısaca Alt Sorgu bir sorgu içine gömülmüş SELECT sorgularıdır. 
  • Çoğu durumlarda  Alt Sorguyu JOIN ifadelerine dönüştürebiliriz. 
  • Genelde Büyük sorgulardaki karmaşıklığı azaltmak, anlaşılabilirliği arttırmak için kullanılırlar. 
  • Mantık olarak burda yaptığımız bir sorgu sonucu gelen sonuç listesine dayalı yeni sorgular çalıştırmak için kullanırız. 
  • Bilmeniz gereken Alt Sorgularda JOIN işlemi daha hızlı işlemektedir. 
  • Ayrıca daha karmaşık SP'ler yazmaya başladığınızda bunu daha iyi anlayacaksınız. 
  • Scriptlerin anlaşılabilirliği, yazılımcıdan bağımısızlığı ne kadar iyi sağlanırsa yazdığınız sorgular o kadar uzun ömürlü ve kullanılabilir olur. 
  • Kural olarak ise Alt Sorguları parantez içinde yazmalıyız.

İlgili Konular;

35. SUBQUERIES-Sonuç Listesinin Tablo Olarak Kullanılması 
36. SUBQUERIES-Sonuç Listesinin Deyim Olarak Kullanılması 
37. SUBQUERIES-İlişkili Alt Sorgular 
38. ALT SORGULAR - JOIN Dönüşümü
39. SUBQUERIES-HAVING Dönüşümü 
40.SUBQUERİES- EXISTS ve NOT EXISTS Kullanımı

13 Mayıs 2012 Pazar

27. INNER JOIN Kullanımı

  • SQL de varsayılan (default) olarak kullanılan tablolaları bağlama işlemidir. 
  • Bağlanan tablolarda sadece ilişkili kayıtlar listelenir.
Örnek: Sorgumuzda hangi firmadan hangi ürünü aldığımızı bulmak istiyoruz. Bunun için iki farklı tabloyu birleştirip istediklerimiz SELECT ediyoruz. SELECT * FROM... yaparak da listenen tüm verileri görebilir, istediklerimizi alabiliriz. Diğer bir konuda AS kullanma sebebim daha büyük sorgularla uğraştığımızda bilmeniz gereken bir spde (Stored Procedure) bir tabloya 2 veya daha fazla sorgu cekmeniz gerekebilir. Bunun için ayrı ayrı nesne gibi düşünüp (p,s) gibi üzerinde işlemler yapmak size daha anlaşılabilirlik ve kolaylık sağlayacaktır.

Sorgu:
SELECT ProductName,CompanyName
FROM
Products AS p
INNER JOIN
Suppliers  AS s ON s.Supplierid=p.Supplierid

Ders 28'e geçebilirsiniz.