8 Aralık 2012 Cumartesi

T-SQL de sp_helptext System Prosedürünün kullanılması

  • sp_helptext prosedürü bizim tanımladığımız yada sistemde bulunan objelerin tanımlamalarını text formatında gösterir.
  • Böylece istediğimiz objenin tüm içeriğini nerede olduğunu aramadan Örneğimizle direk alabiliriz.
SÖZ DİZİMİ:
sp_helptext '@objname'

USE NORTHWIND
GO
EXEC
sp_helptext 'Ten Most Expensive Products'
GO



2 Aralık 2012 Pazar

T-SQL'de sp_help System Prosedürünün Kullanımı

  • Genel olarak sistemde bulunan bir tablo hakkında ayrıntılı bilgi almamızı sağlar.
SÖZ DİZİMİ:

EXEC sp_help '@objname'

A. Bütün nesneler hakkında bilgi almak için;
  • Animal veritabanındaki herbir objenin bilgilerini listeler.
USE Animals

exec sp_help


B. İstenilen Obje hakkında bilgi almak için;

Örneğimiz Animals veritabanındaki Kuslar tablosu ile ilgili bilgileri getirir.

USE Animals

exec sp_help 'Kuslar'


NOT:F1 tuşuyla bunu hazır olarak kullanabilirsiniz.

1 Aralık 2012 Cumartesi

T-SQL'de sp_rename System Prosedürünün Kullanılması

  •  SQL de nesnelerimizin adlarını değiştirmek için sp_rename sistem procedürünü kullanılırız.
SÖZ DİZİMİ:

exec sp_rename @object_name, @new_object_name, @object_type

1-) Tablo adının değiştirilmesi 

SELECT object_id('Birds')
exec sp_rename  'Birds','Kuslar'


SELECT object_id('Birds')
SELECT * FROM Birds
Invalid Object Name 'Birds' hatası döndürecektir.

SELECT * FROM Kuslar
Sorgusunu çalıştırarsınız, Birds tablosundan taşıdığımız kolonları göreceksiniz.
İçerisinde data olduğu için kayıtlı verileri görebilirsiniz.



2-) Kolon adının değiştirilmesi : 

  • Biraz önce create ettiğimiz ve adını Kuslar olarak değiştirdiğimiz tablonun name kolonunu Adı olarak değiştirelim..
  • sp_rename prosedürünün bizim şimdiye kadar kullanmadığımız, default u 'object' olan bir parametresi daha var.  
  • Kolonlar, sysobjects de yer almazlar ve birer database objesi değillerdir ve tablo ismi olmadan da birşey ifade etmezler. 
  •  x tablonun y kolonu diye saklanırlar ve çağırılırlar.  Bu yüzden ismini değiştirdiğimiz nesnenin kolon tipinde olduğunu ve hangi tabloya ait olduğunu  da söylememiz gerekir.
exec sp_rename 'Kuslar.Name','Adı','COLUMN'

Kuslar tablomuza ait olan name isimli kolonu Adı olarak değiştirdik.

SELECT * FROM Kuslar
sorgusunu çağırarak kolon adının değiştiğini görebiliriz.


3-) Index değerinin değiştirilmesi
  • sp_rename ile indexleri de yeniden adlandırabiliriz.
 exec sp_rename 'Kuslar.BirdId', 'KusNo','INDEX'


NOT: sp_rename ile syscomments de bulunan text alanındaki nesne ismini değiştiremeyiz.
Bu yüzden 'function','stored procedure','trigger' ve 'view' gibi programlanabilir nesneler için sp_rename i kullanmamalıyız.
Bu tür nesneler için sp_rename yerine önce bu nesleri drop(silme) edip sonra istediğimiz yeni isim ile yeniden create(oluşturma) edebiliriz.

NOT: Oluşturulan her bir nesne nin bir id si vardır ve sql serverda nesneler id leri ile saklanırlar.
object_id system function ını kullanarak objenin id sini öğrenebilir ve varolup olmadığından da böylecek emin olabiliriz.
object_id (objectname) null döndürüyorsa o isimde nesne ilgili database de yok demektir.

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.