© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Slides:



Advertisements
Benzer bir sunumlar
Stored Procedure Öğr.Gör.Metin Akbulut.
Advertisements

T sql-diğer komutlar Metin Akbulut.
VTYS Öğr. Gör. Engin DUTAR
III.Oturum: SQL ile Verileri İşlemek
KARMAŞIK SORGULAR.
SQL (Structured Query Language)
VERİ TABANI YÖNETİMİ Ders 11: PL/SQL’e Giriş
Karmaşık (İç içe) SELECT Sorguları
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
VERİ TABANI ve YÖNETİMİ
Alt Sorgular Veritabanı 2.
Fonksiyonlar Hafta 4.
T-SQL-2.Konu Akış Kontrolleri.
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
BÖLÜM 6 SQL SERVER KOMUTLARI.
10 Gruplandırarak Sorgulama
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
SQL (STRUCTURED QUERY LANGUAGE)
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
SQL Komutlar 3 Sibel SOMYÜREK.
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
SQL de Değişken Tanımlama
MySQL Operatörleri ve Fonksiyonları
SQL SERVER 2008 Yücel YILDIRIM.
VeriTabanı Uygulama.
SQL SERVER STORED PROCEDURE
SQL Komutları (2) Uzm. Murat YAZICI.
FONKSİYONLAR İbrahim Onur Sığırcı.
RAISE RECORD/CURSOR TRIGGER
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş
SELECT CONVERT(CHAR(8), GETDATE(), 112)
SQL’ e Giriş Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı Arş. Gör. Pınar CİHAN.
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
 Stored Procedure kısaca SQL sorgularını isteğimize göre hazırlayıp kullanıma hazır veri tabanı nesnesine çeviren bir araçtır.  Stored Procedure, Türkçeye.
Saklı Prosedürler (Stored Procedures) kalibi Create Procedure Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu Create Proc Procedure_Adi [Parametre_Listesi]
BÖLÜM 9 VERİ TABANI NESNELERİ.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Bilgisayar Mühendisliği Bölümü
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİLER ve HATA KONTROLÜ
14.DERS Örnekler, Sorular BUKET DOĞAN.
SQL SERVER STORED PROCEDURE
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SQL Server’da Fonksiyon Kullanımı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
FONKSİYONLAR İbrahim Onur Sığırcı.
RAISE RECORD/CURSOR TRIGGER
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL Server - Stored Procedures
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Sunum transkripti:

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi HAFTA 9 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Hatırlatma: Geçen hafta Cursor kullandık © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

use northwind DECLARE deneme2 CURSOR FOR SELECT BirimFiyati,UrunAdi from Urunler GO DECLARE @stok INT DECLARE @ad nvarchar(40) OPEN deneme2 FETCH deneme2 INTo @stok,@ad WHILE (@@FETCH_STATUS=0) BEGIN PRINT convert(varchar(10),@stok)+ ' ' + @ad END CLOSE deneme2 DEALLOCATE deneme2

Sistem Fonksiyonları Her SQL Server veritabanında sistem fonksiyonlarının tanımları Programmability\Functions\System Functions altında mevcuttur Sorgularda kullandığımız çok-satır alıp tek satır döndüren Avg, Sum Max, Min ve Count gibi fonksiyonlar Aggregate Functions altındadır.

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Peki fonksiyonlar neden kullanılır? Pratiklik: Bir işlemi her defasında yazmaktansa bir kere tanımlayıp, her yerden çağırma olanağı sunar. Kod Okunabilirliği: Bir script içerisinde daha az kod kullanılacağından dolayı, bizi kod karmaşasından kurtarır. Performans: Fonksiyonların en önemli özelliğidir. Nasıl bir performanstan bahsediyoruz biraz inceleyelim. Bir sorgu çalışmadan önce 5 aşamadan geçer. Önce kodun yazım hataları, syntax 'ı, semantic 'i kontrol edilir(Parse). Daha sonra sorguda kullanılan tabloların kolonları var mı, ona bakılır(Resolve). Bu ıslemden sonra sorgunun sonucunu nasıl döndüreceğini, indexlemeleri kontrol eder(Optimize). Daha sonra döndüreceği şeklı belirledikten sonra derleme işlemi yapılır(Compile). Son olarak sorgu çalışır ve sonuç döner(Execute). Fonksiyonumuz çalıştığında, "compile" işlemi dahil compile 'dan önceki tüm aşamaları işlemeden geçer. Geriye sadece "execute" işlemi kalır. Bu da önemli bir hız demektir. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Kullanıcı Tanımlı Fonksiyonlar Sistem fonksiyonlarına ilave olarak kullanıcılar da 3 farklı türde fonksiyon tanımlayabilir: Table Valued Functions: Tablo döndürebildiği için sorguda tablo gibi kullanılabilen (from sonrasında yazılabilen) fonksiyonlar Scalar Valued Functions: bir yada birkaç parametre alıp, tek bir değer döndüren fonksiyonlar Aggregate Functions: Sum, Avg gibi çok değer alıp tek değer döndüren fonksiyonlar

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi CREATE FUNCTION BugununTarihi() returns datetime AS BEGIN DECLARE @Tarih DATETIME set @Tarih= GETDATE() RETURN @Tarih END select dbo.bugununtarihi() © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Fonksiyon Örneği CREATE FUNCTION NetMaasHesapla ( @BurutMaas numeric(10,2) ) RETURNS numeric(10,2) AS BEGIN DECLARE @NetMaas numeric(10,2) IF (@BurutMaas > 5000) SET @NetMaas = @BurutMaas*0.80 ELSE SET @NetMaas = @BurutMaas*0.85 RETURN @NetMaas END

Select PerNo, Ad, Soyad, Maas AS [Bürüt Maaş], Fonksiyonu Kullanma Kullanıcı tanımlı fonksiyonlar da, yerleşik SQL fonksiyonları gibi sorgu içinde kullanılabilirler (SP kullanılamaz). Yerleşik (built in) fonksiyonlardan farklı olarak öncesinde şema ismi (dbo) yazılmalıdır. Select PerNo, Ad, Soyad, Maas AS [Bürüt Maaş], dbo.NetMaasHesapla(Maas) AS [Net Maaş] From Personel;

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Tablo olarak UDF Sayısal değerli fonksiyondan tek farkı döndürdüğü verinin tablo olmasıdır. Viewlerle büyük benzerlikler içerir ancak farklı olarak dışarıdan parametre alabilirler. Örneğin; "fn_ilegore " alıştırması bu tip bir fonksiyon sayesinde yapılmıştır. CREATE FUNCTION fn_ilegore (@deger varchar(50)) RETURNS table AS RETURN Select * from Personeller where Sehir=@deger Go select * from dbo.fn_ilegore('london') Oluşturulan örnek fonksiyona Programmability-> Functions-> Table-valued Functions yoluyla ulaşılabilir. Fonksiyonu çalıştırmak için aşağıdaki örnek kod çalıştırılmalıdır: © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi CREATE FUNCTION dbo.hesap1(@YIL INT,@AY int ) RETURNS MONEY begin DECLARE @toplam money SELECT @toplam=SUM (BirimFiyati*Miktar) FROM SatisDetaylari AS sd INNER JOIN Satislar as s ON sd.SatisID=s.SatisID WHERE (year(S.SatisTarihi)=@YIL) and (month(s.SatisTarihi)= @AY ) GROUP BY SatisTarihi RETURN @TOPLAM end SELECT dbo.hesap1(1996,9) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Prosedür ile Fonksiyon arasındaki Temel Farklar: Saklı Yordam (SY) Kullanıcı Tanımlı Fonksiyon (KTF) Select ifadesi içinde kullanılamaz Select ifadesi içinde kullanılabilir Genellikle bir işi gerçekleştirmek için kullanılır Genellikle bir hesaplama için kullanılır Değer döndürmesi şart değildir Mutlaka değer döndürmelidir Tüm veri türlerini döndürebilir Image gibi bazı veri türlerini döndüremez Daha fazla girdi parametresi alabilir (21000 adet) En fazla 1023 girdi parametresi alabilir Geçici tabloları kullanabilir Geçici tabloları kullanamaz Dinamik SQL yürütebilir Dinamik SQL yürütülemez Hata İşleme desteği vardır Hata işleme desteği yoktur (RAISEERROR veya @@ERROR kullanılamaz) Non-Deterministik fonksiyonlar kullanılabilir GETDATE() gibi non-deterministik fonksiyonlar kullanılamaz

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi create function dbo.tarihFormatla (@tarih datetime,@ayrac nchar(1),@format nchar(3)) returns nchar(10) as begin declare @yil nchar(4) = year(@tarih) declare @ay nchar(2) = month(@tarih) declare @gun nchar(2) = day(@tarih) declare @formatliTarih nchar(10) if len(@gun) = 1 set @gun = '0' + @gun if len(@ay) = 1 set @ay = '0' + @ay if @format = 'dmy' set @formatliTarih = @gun + @ayrac + @ay + @ayrac + @yil else if @format = 'mdy' set @formatliTarih = @ay + @ayrac + @gun + @ayrac + @yil else if @format = 'ymd' set @formatliTarih = @yil + @ayrac + @ay + @ayrac + @gun return @formatliTarih end go select dbo.tarihFormatla(getdate(),'/','ymd') © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Parametre olarak verdiğimiz "ad" yada "soyad" 'a göre "Employees" tablosundan veriler çeksin. "Select" ile çektiği veriler aynı zamanda belirttiğimiz geçici tabloma da "insert" etsin. Burada dikkat edilmesi gereken nokta tabloma ekleyeceğim verilerin, tablomun sütün sayısına ve sütunlarımın tiplerine uygun olması gerektiğidir.  CREATE FUNCTION Kisilerim(@tip nvarchar(30)) RETURNS @Tablom TABLE (Id INT,Isim NVARCHAR(50)) AS BEGIN     IF(@tip='ad')         BEGIN  INSERT @Tablom SELECT PersonelID,Adi FROM dbo.Personeller         END    ELSE IF(@tip='adsoyad')   INSERT @Tablom SELECT PersonelID, Adi+' '+SoyAdi AS Isim              FROM dbo.Personeller     RETURN END SELECT * FROM Kisilerim('adsoyad') © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi