ForumSevgisi.Com

  ForumSevgisi.Com > ForumSevgisi Webmaster Bölümü > Webmaster Genel

Webmaster Genel Webmasterlıkla ilgili Her şeyin Paylaşıldığı Bölüm.


Sql serverde veritabanı-2

Webmasterlıkla ilgili Her şeyin Paylaşıldığı Bölüm.


Sql serverde veritabanı-2

ForumSevgisi Webmaster Bölümü Kategorisinde ve Webmaster Genel Forumunda Bulunan Sql serverde veritabanı-2 Konusunu Görüntülemektesiniz,Konu İçerigi Kısaca ->> Sql serverde veritabanı-2 Bir Stored Procedure’ ün oluşturulması için bazı kurallar mevcuttur. Örneğin en fazla 255 parametreye sahip olabilir. Referans ...

Kullanıcı Etiket Listesi

Yeni Konu aç  Cevapla
LinkBack Seçenekler Stil

Okunmamış 20 Mart 2015, 22:39   #1
Durumu:
Çevrimdışı
IDurDurBeni
Düşmanlara inat Mücadeleye devam...
IDurDurBeni - ait Kullanıcı Resmi (Avatar)
Arastirmaci
Üyelik tarihi: 12 Mart 2015
Mesajlar: 164
Konular: 95
Beğenilen: 49
Beğendiği: 64
www.forumsevgisi.com
Standart Sql serverde veritabanı-2

Sql serverde veritabanı-2

Bir Stored Procedure’ ün oluşturulması için bazı kurallar mevcuttur. Örneğin en fazla 255 parametreye sahip olabilir. Referans edilen nesneler prosedür oluşturulmadan önce server üzerinde bulunmak zorundadır.
Bir stored procedure içinde Create Default, Create Procedure, Create Rule, Create Trigger, Create View gibi SQL ifadeleri kullanılamazlar. Bunlar biraz aykırı durumlarda karşımıza çıkacak olan kurallardır. Ancak önemli bir noktayı da belirtmek gerekir: Eğer prosedür içinde “SELECT *” ifadesi kullanıldıysa ve daha sonra da bu ifade içinde referans edilen tabloya yeni alanlar eklendiyse prosedür çalıştığında yeni alanlar gözükmezler. Dolayısıyla referans edilen tablo yapısında değişiklik yapılırsa, onu kullanan prosedürün de yeniden derlenmesi gereklidir.
Prosedürlerde Parametre Kullanımı
Parametre kullanmak prosedürün her çalıştığında daha farklı davranış göstermesine imkan tanır. Örnek olarak kendisine verilen test sonuçlarının ortalamasını alan bir prosedür yazabilirsiniz. Prosedürü oluştururken test sonuçlarının değerlerini bilmiyor olabilirsiniz ama prosedür her çalıştığında yeni bir sonuç alırsınız. Parameter veri tipi image tipi hariç her türlü sistem tarafından ya da kullanıcı tarafından tanımlanmış tipleri kabul eder.
Stored Procedure' ün çalışabilmesi için tanımlanmış parametrelerin tümüne değer sağlanması zorunludur. Eğer bir parametre için default bir değer belirlenmişse kullanıcı farklı bir değer almasını istemedikçe parametre default değerini alacaktır. Normal olarak parametreler sırasıyla kullanılmalıdır. Ancakprosedür içinde tanımlanma referansa göre geçirilecek şekilde yapılmışsa, istenilen sırada verilebilir.
OUTPUT opsiyonu başka bir prosedüre değer taşımaya imkan sağlar. Yani bir prosedür kendisini çağ başka bir prosedüre kendi ürettiği bir çıktı değerini geçirebilir. Bu olay aşağıdaki örnekte gösterilmiştir.
Bu prosedür beş parametre kabul eder, ortalamasını alır ve ortalamayı OUTPUT olarak dışarı verir.
CREATE PROCEDURE scores
@score1 smallint,
@score2 smallint,
@score3 smallint,
@score4 smallint,
@score5 smallint,
@myAvg smallint OUTPUT
AS SELECT @myAvg =
(@score1 + @score2 + @score3 + @score4 + @score5) / 5
Bu prosedürdeki
myAvg
değerini alabilmek için öncelikle bir değişken tanımlayıp sonra prosedürü çalıştırabiliriz.
DECLARE @AvgScore smallint
EXEC scores 10, 9, 8, 8, 10, @AvgScore OUTPUT
SELECT `Ortalama :
`, @AvgScore
GO
-----
Ortalama :
9
Dikkat edilirse parametreler tanımlandıkları sıra ile verilmişlerdir. Bu durum pozisyonuna göre verilmedir. stenirse referansa göre de yapılabilir. Bu yöntem uygulanacaksa prosedürün kullanıldığı yerde parametreler herhangi bir sıraya bağlı tutulmaksızın "parametre ismi = değeri" şeklinde geçirilebilir. Aşağıdaki örnekte bu durum incelenmiştir.
DECLARE @AvgScore smallint
EXEC scores
@score1 = 10, @score3 = 9,
@score2 = 8, @score4 = 8,
@score5 = 10, @myAvg = @AvgScore OUTPUT
SELECT `Ortalama :
`, @AvgScore
Sonuç öncekinden farksız olacaktır. Ancak görüldüğü üzere istenilen sıra kullanılabilir. Son olarak; referansa göre geçirilecekse tüm prosedür boyunca bu metod kullanılmalıdır. Prosedürü çağırırken tam ortada diğer moda geçiş yapılamaz.
Prosedürden değer döndürmek için ayrıca RETURN ifadesi kullanılabilir. Bu şekilde OUTPUT ifadelerini hem prosedür içinde hem de prosedürün çağrıldığı yerde tanımlamak zorunda kalınmadan doğrudan değer döndürülebilir. Normal olarak SQL Server 0 ile -99 arası olan değerleri bu şekilde döndürür. Sıfır değeri prosedürün çalışmasında bir hata oluşmadığını belirtir. Diğerleri ise muhtelif hata durumlarında kullanıcıyı uyarmak için kullanılırlar. Ancak kullanıcı RETURN ile bunlar haricinde değerler döndürebilir. Aşağıda kullanımına bir örnek verilmiştir.
CREATE PROC MyReturn
@t1 smallint, @t2 smallint, @retval smallint
AS SELECT @retval = @t1 + @t2
RETURN @retval
Prosedürü oluşturduktan sonra aşağıdaki şekilde kullanılarak sonuç elde edilir.
DECLARE @myReturnValue smallint
EXEC @myReturnValue = MyReturn 9, 9, 0
SELECT `Sonuç :
`, @myReturnValue
------
Sonuç :
18
Triggers
Trigger, belirli bir tablo üzerindeki kayıtlar üzerinde değişiklik yapıldığı zaman çalışan özel bir stored procedure türüdür. Trigger' lar izin verilmeyen ya da tutarsızlığa neden olacak işlemleri engelleyerek veri bütünlüğünün korunmasına yardımcı olurlar. Daha önceki veritabanı sistemlerinde triggerlar tablolar arası birbirlerine referans yapan verilerin bütünlüğünü sağlamak maksadıyla kullanılırlardı. Anca SQL Server 6.5' dan itibaren bu işlem zaten Referantial Integrity tanımlamalarıyla sağlandığı için bu maksatla kullanılmaları gereksizdir.
Triggerlar genellikle değişik tablolar üzerinde bulunan ve birbirleri arasında mantıksal ilişkilere sahip verilerin tutarlılığını sağlamak üzere oluşturulurlar. htiyaca göre uygulamanın getirdiği bazı kuralları kontrol etmek için de kullanılabilirler.
Örneğin yeni bir sipariş kaydı işleneceği zaman, siparişlerin yanına iliştirilecek olan müşteri numarasının geçerli olup olmadığını kontrol edecek bir trigger oluşturulabilir. Aynı şekilde customers tablosundan bir müşteri silinmeye çalışıldığında, bu müşterinin başka tablolarda kendine bağlı bir kayıt bulunması durumunda işlemi iptal edecek ve kullanıcıya hata mesajı döndürecek bir trigger da yazılabilir.
Triggerların getirdiği en büyük avantaj otomatik olarak devreye girmeleridir. Veri modifikasyonuna ne sebep olursa olsun çalışırlar. Her trigger bir veya daha fazla veri değiştirme işleminde harekete geçecek şekilde tanımlanır. Örneğin bir trigger yalnızca update olayında çalışabileceği gibi, hem update hem de insert durumlarında da çalıştırılabilir. Ya da update, insert ve delete işlemlerinin her biri için ayrı ayrı triggerlar tanımlanabilir.
Triggerlarda parametre kullanılmaz ve harici olarak çalıştırılamazlar. Bunun anlamı triggerin tetiklenebilmesi için mutlaka tablo üstünde veri değişikliği yapmak gerektiğidir. SQL Server' da triggerlar aynı zamanda 16 seviyeye kadar birbirini tetikleyecek şekilde tanımlanabilirler.
Nispi olarak triggerlar daha az zaman kaybına neden olurlar. Triggerın çalışmasında zamanın çoğu diğ tablolara referans yaparken harcanır. Diğer tablolar bellekte bulunuyorsa referans işlemi hızlı olur ancak eğer diskten okunması gerekiyorsa işlem oldukça yavaşlar. leride bahsedeceğimiz deleted ve inserted tabloları daima bellekte yer alırlar. Triggerın performansı da tamamen diğer tabloların nerede bulunduğuna bağlıdır.
Triggerlar her zaman transaction' ın bir parçası olarak çalışırlar. Eğer transaction' ın herhangi bir bölümünde ya da triggerda bir hata oluşursa yapılan işlemler tümüyle geri alınır. Recursive olarak çalışmazlar. Yani bir tablonun herhangi bir sütununda yapılan değişiklik üzerine bir trigger çalışıp aynı tablonun başka bir sütünunda değişikliğe neden oluyorsa ikinci yapılan değişiklik trigger için tetiklenmeye neden olmaz. Yani buradaki update triggerı tekrar tekrar çalışmaz, yalnızca bir kez çalışır.
Triggerlar bir tabloya spesifik olarak tanımlanırlar. Sadece tablonun sahibi Create Trigger ve Drop Trigger işlemlerini yapmaya yetkilidir. Bu yetkiler başka birine aktarılamazlar. Bir tabloda en fazla üç tane trigger bulunabilir. Update trigger, Insert trigger ve Delete trigger. Her bir trigger yalnızca tek bir tabloya uygulanabilir. Bunu yanında tek bir trigger birden fazla işlemde harekete geçmek üzere tanımlanabilir.
Trigger kullanırken dikkate almamız gereken diğer hususları şöyle sıralayabiliriz:
* View ya da geçici tablolar üzerinde olutturulamazlar. Fakat bunlara referans yapabilirler.
* Çalıştıktan sonra bir kullanıcıya değer kümesi gönderemezler. Dolayısıyla SELECT ifadesi dahil edileceği zaman dikkatli olunmalıdır.
* Veri bütünlüğünü, farklı tablolardan birbirine referans yapan verilerin tutarlılığını sağlamak için ve uygulamanın ihtiyacına göre bazı kuralları tanımlamak üzere kullanılabilirler.
* İstenirse syscomments tablosunda şifrelenmiş şekilde saklanabilirler.
* CREATE, DROP, ALTER TABLE, ALTER DATABASE, SELECT INTO gibi ifadeler trigger içinde kullanılmazlar.
Inserted ve Deleted Tabloları
Triggerlar çalıştığı zaman Inserted ve Deleted tablolarını kullanırlar. Bu tabloların her ikisi de ana tabloyla yani triggerın tetiklendiği tabloyla aynı yapıya sahiptirler. Bu tablolar, mantıksal tablo şeklinde RAM' de bulunurlar. Ana tabloya bir kayıt eklendiği zaman bu kayıt aynı zamanda inserted tablosuna da eklenir. htiyacımız olduğu zaman yeni eklenen değerlere bu tablodan ulaşarak, bu bilgileri tutmak maksadıyla değişken tanımlamak zorunda kalmaktan kurtuluruz. Tablodan bir kayıt silindiğinde silinen kayıt deleted tablosunda saklanır. Update itlemi ise delete ve hemen ardından yapılmış bir insert işlemi olarak ele alınır. Bir kayıt update edildiğinde orjinal kayıt deleted tablosuna işlenir, değişen kayıt da inserted tablosunda ve ana tabloda saklanır.
Trigger Kullanım Örnekleri
Aşağıdaki örnekte tabloda insert veya update işlemi yapıldığı zaman kaç kaydın etkilendiğini gösteren bir hata oluşturulmaktadır.
CREATE TRIGGER trAddAuthor
ON authors
FOR INSERT, UPDATE
AS raiserror ("%d kayıt üzerinde değişiklik yapılmıştır",0,1,@@rowcount)
RETURN
Alıntı ile Cevapla
Yeni Konu aç  Cevapla

Etiketler
serverde, sql, veritabani2

Seçenekler
Stil


Saat: 04:28

Forum Yasal Uyarı
vBulletin® ile Oluşturuldu
Copyright © 2016 vBulletin Solutions, Inc. All rights reserved.

ForumSevgisi.Com Her Hakkı Saklıdır
Tema Tasarım:
Kronik Depresif


Sitemiz bir 'paylaşım' sitesidir. Bu yüzden sitemize kayıt olan herkes kontrol edilmeksizin mesaj/konu/resim paylaşabiliyorlar. Bu sebepten ötürü, sitemizdeki mesaj ya da konulardan doğabilecek yasal sorumluluklar o yazıyı paylaşan kullanıcıya aittir ve iletişim adresine mail atıldığı taktirde mesaj ya da konu en fazla 48 saat içerisinde silinecektir.

ankara escort, izmir escort ankara escort, ankara escort bayan, eryaman escort, bursa escort pendik escort, antalya escort,