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

20 Ocak 2013 Pazar

SQL Server da Temp(Geçici) ve Değişken(Variable) Tabloların Kullanılması

  • SQL Serverda Geçici tablo oluştururken iki seçeneğimiz bulunmakta. Bunlar kullanım şeklinize göre farklılık gösterebilir.
  • Birinci kullanım şeklimiz geçici tabloları (Temporary tables).
  • İkinci kullanım şeklimiz değişken tablolar (Table variables). 
  • Bu iki yönteminden birbirlerine karşı avantaj ve dezavantajları bulunmaktadır.
1-) Geçici Tablolar (Temporary Tables)
  • Temp Tabloların normal tablolardan başlıca farklı system database lerden olan tempdb içinde tutuluyor olmalarıdır.
  • Oluşturduğumuz tablonun temp table olduğunu SQL Servera bildirmek için başına '#' işareti koyarız.
  • SQL Serverda geçici tablolara sadece bulundukları ortamlardan erişilebilir. Eğer temp table a global olarak diğer ortamlardan da erişilmesini istiyorsak o zaman global temp table kullanmamız gerekmektedir.
  • Global temporary tables (Genel geçici tablolar) tanımlamak için temp table dan farklı olarak CREATE TABLE dediktenden sonra tablomuzun ismini vermeden önce '##' (2 adet) koyarız.
  • Global temporary tables ın bütün özellikleri temp table ile aynıdır.
  • Ayrıca oluşturduğumuz tabloyu kullanıdıktan sonra silmeyi unutmayalım. Unutsak dahi oturum kapandığında SQL Server otomatik bütün temp table ları silecektir. 
SÖZ DİZİMİ:

CREATE TABLE #TemporaryTable(
     number INT PRIMARY KEY,
     name NVARCHAR(50),
     surname NVARCHAR(50)
)





--Direk sorgu sonucu gelen listeyi temp tabloya eklemek için;

SELECT * INTO #TemporaryTable FROM Person


--Tablomuzu silmek için;
DROP TABLE #TemporaryTable  

NOT: SQL Serverda '#' ile başlayan tablolar SQL Server durduğu ana kadar saklanır. Fakat tablolarımızı tempdb.. altına kendimiz normal tablo ekler gibi eklersek tablolarımız SQL Server kapatılana kadar orda saklanır. SQL Server kapatıldığında temp tablolarımızın silinmesini istiyorsak bu yapıyı kullanabiliriz.


  1-) Değişken Tablolar (Table Variables)

  •  Değişken tablolarda aslında geçici tablolara benzemektedir. Fakat fark olarak oluşturduğumuz tablonun bir kısmı tempdb de bir kısmında Sunucu olarak kullanıdığımız SQL Server belleğinde tutulmaktadır.
  • Değişken tablolarda da geçici tablo gibi bir yapı vardır. Değişken tablo oluşturduğumuz zaman tablo isminin başına '@' işareti koyarız.
  • Değişken tablolara erişim geçici tablolara göre daha hızlı olmaktadır. Fakat değişken tablolara fazla veri yüklemek belleği dolduracağından performans kaybına da yol açabilir.
  • Değişken tablolar, kullanıcı tanımlı fonksiyonlar (User Defined Functions) içinde kullanılabilirken, geçici tabloların UDF içinde kullanımı mümkün değildir. 
  • Stored Procedure ler içinde 2 tablo yapımızıda kullanabiliriz.
  • Değişken tablolar üzerinde index tanımı yapamayız fakat geçici tablolar üzerinde yapabiliriz.
  • Değişken tablolar tanımlandıktan sonra (declare) alter table ile değiştiremeyiz.
 SÖZ DİZİMİ:

DECLARE @TemporaryTable TABLE (
     number INT PRIMARY KEY,
     name NVARCHAR(50),
     surname NVARCHAR(50)
)

29 Aralık 2012 Cumartesi

SQL Server'da Fonksiyon Oluşturma ve Kullanma

  • Fonksiyonlar istenilen veri tiplerini alıp istenilen veri tiplerini veya bir tablo bile geri döndürebilir.
  • Birden çok parametre vereceğimiz zaman bunları virgül ile ayırmamız gerekmektedir. 
Function Create(Fonksiyon  Oluşturma) 
  • Örneğimizde Animals tablomuzdaki Kusların ortalama ağırlıklarını döndüren bir fonksiyon yazalım.

ÖRNEK:

CREATE FUNCTION fnc_OrtalamaAgirlik
(
@KusNo int
)
RETURNS int
AS
BEGIN
  DECLARE @Result int
  SET @Result = (SELECT AVG(Weight) FROM Animals.dbo.Kuslar WHERE KusNo <=@KusNo)
RETURN(@Result)
END


Function Kullanma(Fonksiyon  Kullanma)  
  • İstediğimiz lokasyondan doğru path i vererek fonksiyonumuzu çağırabiliriz.
 ÖRNEK:

DECLARE @KusNo int
SET @KusNo = 5
SELECT dbo.fnc_OrtalamaAgirlik(@KusNo) AS Ortalama



24 Kasım 2012 Cumartesi

57. CONTINUE Komutunun kullanımı

  • Program çalıştığı süreç içinde bazı durumlarda WHILE döngüsü içindeyken END e kadar gidip başa dönmesinden ziyade istediğimiz şartın içinde o an ki döngüsünü bitirmeden başa gönderir ve bir sonraki değer için bloğa girmesini sağlarız.
  • Aşağıdaki örneğimizde sadece karesi çift sayı olan değerlerini yazılması sağlayabiliriz.
ÖRNEK:
DECLARE @Sayi INT
SET @Sayi=1
WHILE (@Sayi<15)
BEGIN
    IF((@Sayi*@Sayi)%2=1)
    BEGIN
        SELECT @Sayi=@Sayi+1
        CONTINUE
    END
    BEGIN
        PRINT CAST(@Sayi AS VARCHAR(5))+' sayısını karesi='+ CAST(@Sayi*@Sayi AS VARCHAR(5))
    END
    SELECT @Sayi=@Sayi+1
END


Ders 58'e Geçebilirsiniz.

23 Kasım 2012 Cuma

56. BREAK Komutunun Kullanımı

  • İstenilen şart yerine getirildiğinde döngüden çıkmak için BREAK komutu kullanılır.
  • Program çalışmasına WHİLE 'ın END satırından sonra devam eder.
  • BREAK komutu performans açısında da önemlidir. 
  • Gereksiz yeri elimizdeki bütün verileri kontrol etmemizi engeller. İstediğimiz dataya ulaştığımız zaman diğerlerini incelemeden döngüden veya listeden çıkmamızı sağlar.
ÖRNEK:
DECLARE @Sayac INT
SET @Sayac=0
WHILE (@Sayac<10)
BEGIN
    SELECT @Sayac=@Sayac+1
    IF(@Sayac*@Sayac>9)
        BEGIN
            PRINT 'Sayı 9 değerini geçti.'
            BREAK
        END
END
PRINT @Sayac

Not: Bu yapıda BEGIN..END lerin kullanımına dikkat edin. T-SQL de bunları düzgün kullanmak önemlidir.

Ders 57' ye geçebilirsiniz.

29 Ekim 2012 Pazartesi

53. IF..ELSE Yapısının Kullanılması

  • Diğer programlama dillerinde olduğu gibi SQLde de bloklar kullanılır.
  • Eğer işlenecek komut satırları birden fazla ise mutlaka BEGIN..END yapısı kullanılmalıdır.
  • IF..ELSE blokları komutların belirli bir koşula bağlı olarak çalışmasını sağlar.
SÖZ DİZİMİ:
IF Koşul
{
   Deyim
}
ELSE
{
   Deyim
}
ÖRNEK:
//ortalama fiyatın düşük veya yüksek olup olmadığını buluyoruz.

DECLARE @ortalamafiyat DECIMAL(10,2)
SELECT @ortalamafiyat=AVG(UnitPrice) FROM Products
PRINT 'Ortalama Birim Fiyatı='+CAST(@ortalamafiyat AS VARCHAR(5))
IF(@ortalamafiyat<30)
BEGIN
    PRINT 'Düşük Fiyat'
END
ELSE
BEGIN
    PRINT 'Yüksek Fiyat'
END


Ders 54'e geçebilirsiniz.

6 Eylül 2012 Perşembe

49. DECLARE & SET Kullanımı

  • SQL'de değişken tanımlamalarında DECLARE komutu kullanılır.
  • Tanımlıdığımız değişken değer atama işlemlerinde SET komutu kullanılır.
Söz Dizimi: DECLARE @<Değişken_Adı> <Değişken_tipi>



Ders 50'ye geçebilirsiniz.