Geçici bir sanal tablo oluşturmaya yarar. Oluşturduğunuz tablodaki veriyi, karşılaştırma yapmak için kullanabilirsiniz. Kullanım şekli: Aşağıdaki örnekte “temptable” isminde geçici bit tablo oluşturarak buna “AveragePrice” sütununu ekledim, içine de “SalesOrderDetail” tablosundaki “UnitPrice” ‘ın ortalamasını yazdım. Sonrasında normal şekilde sorumu yazdım, “SalesOrderDetail” tablosundan “ProductID” ve “UnitPrice” getir, kullanacağın tablolar (FROM) “SalesOrderDetail” ve “temptable” sonunda da karşılaştırma […]
Trigger
Triggerları yazarken düzene dikkat etmek adına (okunabilirlik) isimlendirmeyi TR_<TableName>_<ActionName> şeklinde yapmanız doğru olur. DDL: Create, Alter ve Drop işlemlerinde işlem gerçekleştikten hemen sonra devreye girerler. Kullanımı aşağıdaki gibidir. Süslü parantez (Curly Brackets) içindekiler kullanabileceğiniz seçenekler / düzenlemeniz gereken alanlardır. Örnek: Yukarıdaki kod bloğunu kaydettikten sonra aynı veritabanı/sunucu (seçiminize göre) içindeki herhangi bir tabloyu silmeye çalıştığınızda […]
Cursor
Cursor mantığını satırların arasında gezen bir imleç olarak düşünebilirsiniz. Cursor yardımıyla istenilen satıra giderek değer okuyup/değiştirebiliriz. Aşağıdaki örnekte 4 satırlı tablomdan name sütunu verilerini imleç name sütunu 1. satırından başlayıp satırı okuyup alt satıra inerek devam etme işleminin kodlarını görüyorsunuz. @@FETCH_STATUS, bir veritabanı satır fonksiyonudur, hakkında detaylı bilgiyi Satır Fonksiyonları kısmında bulabilirsiniz. değişken gibi tanımlanan […]
Satır Fonksiyonları
@@FETCH_STATUS: Bağlantıda açılmış tablodaki imlecin durumunu döndürür. Return value Description 0 FETCH deyimi başarılı. -1 FETCH deyimi başarısız oldu yada son satırdan ileride (satırın bitmesi). -2 Alınan satır eksik -9 Cursor, bir alma işlemi gerçekleştiremiyor FETCH NEXT: Bir sonraki satıra geçer. FETCH PRIOR: Bir önceki satıra geçer. FETCH LAST: En son satıra geçer. FETCH FIRST: […]
Check Constraint
Tablolara eklenebilecek verilerde sınırlama yapmak amacıyla kullanılır. Bu sınırlama int veya nvarchar(##) şeklinde değil, int girilebilecek sütun için, sadece belirlenmiş sayılar arasında giriş yapılabilmesini istediğimiz durumlar için geçerlidir. Yani girilen değer sınırlamasıdır. Yeni oluşturulan tablolar için: varolan tablolar için: varolan tabloda Grade sütununda kısıtımızın sınırları dışında olan değerler varsa kısıt ekleme işlemi başarısız olur. Bunları […]
SQL mng. Query Intellisense
SQL manager üzerinden query çalıştırırken veritabanınızı seçerek “New Query” tıklayın. Aksi takdirde “Query Editor” ‘ünüzü, sistem veritabanı olan “master” üzerinde açar. Bu işlemin gerekliliği ise SQL Manager’deki intellisense yani otomatik tamamlama özelliğini rahat kullanmak için. Örneğin; Eğer buna rağmen Intellisense düzgün çalışmıyorsa Edit -> IntelliSense -> Refresh Local Cache (Ctrl+Shift+R) yapmanız gerekiyor (yeni eklenen veritabanı […]
Try-Catch ve Hata mesajları
Try-Catch yapısı normal programlama dillerindeki ile aynı şekilde kullanılır. Aşağıdaki örnekte TRY içine 0’a bölme işlemi yazdım, program, bu kodu denedikten sonra hata yakalama (CATCH) geçecektir. Hata kodlarının bir kaç özelliği bulunuyor. Bunlar; ERROR_MESSAGE(): İngilizce hata mesajı. ERROR_NUMBER(): Hata numarası. (Bilgisayarımız hata verdiği zaman numara yazdığını görürsünüz. Aynı yapı) ERROR_STATE(): Hata kodu. Hata numaraları birden […]
WaitFor
İki farklı kullanılışı vardır,WAITFOR time ’10:30:00′ –satıra sunucu saatine göre 10:30:00 ‘da devam eder. WAITFOR DELAY ’00:00:02′ — 2 saniyeliğine bekletir.
Goto
belirlediğiniz yere label koyarak kodların o satırdan devam etmesini sağlamak için kullanılır. label olduğunu belirtmek için sonuna “:” konulmalıdır. label ‘a gitmek için ise GOTO kullanmanız yeterli olacaktır.
Offset & Fetch
Offset, satır atlatmak için kullanılır. Fetch, belirli adet satırları almak için kullanılır. Tabloda önce sıralama işlemi yaptırdım, ardından OFFSET kullanarak ilk 4 satırı atlattırarak sonraki satırları yazdırdım. Sıralama yaptırdıktan sonra OFFSET ile ilk 4 satırı atlattırdım ardından FETCH ile ilk iki satırı aldım. (NEXT yerine FIRST de kullanabilirsiniz. İkisi de aynı işi yapar sadece gramer […]