SQL Stored Procedure

Benzer belgeler
Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

SQL TRIGGERS (Tetikleyiciler)

STORED PROCEDURE LER (Saklı Yordamlar)

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

«BM364» Veritabanı Uygulamaları

KULLANICI TANIMLI FONKSİYONLAR (Devam)

VERİ TABANI ve YÖNETİMİ

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

KULLANICI TANIMLI FONKSİYONLAR

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

Bir çeşit prosedür. Ancak bu prosedür kendiliğinden çalışır. Çalışması için tabloya veri eklemek, veri silmek, veri değiştirmek yeterlidir.

VERİ TABANI YÖNETİM SİSTEMLERİ II. 4. SQL PROGRAMLAMADA PROCEDURE ve FUNCTION

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Oracle da kullanılan veri tipleri:

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

VERİ TABANI ve YÖNETİMİ

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

VERİTABANI Veritabanı Yönetimi

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

SQL Komutları (2) Uzm. Murat YAZICI

EXISTS VE NOT EXISTS fonksiyonları

T-SQL NEDİR? Microsoft T-SQL Transact-SQL

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Nesneler üzerinde değişiklik yapmak için kullanılır. Veri tabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır.

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

Veritabanına Uygulanması

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

Güz Yarıyılı MT 487 Bilgisayarda Veri Yapıları Final Çalışma Soruları

Veri Tabanı ve Yönetimi

Cursor. Bir veri tipi olarak da ele alınabilen Transact-SQL Sunucu Cursor şu aşamalardan geçirilerek kullanılır.

PostgreSQL ve PL/pgSQL

VERİ TABANI YÖNETİM SİSTEMLERİ II. 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

VERİTABANI ve YÖNETİMİ

Mysql Veritabanı Komutları

OTURUM AÇMA ADLARI. Tavsiye Edilen Önhazırlık Enterprise Manager'i kullanabilmek.

Veri Tabanı Hafta Dersi

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

PostgreSQL ve PL/pgSQL

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

«BM364» Veritabanı Uygulamaları

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

VERİTABANI. SQL (Structured Query Language)

VERİ TABANI YÖNETİM SİSTEMLERİ I

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Veri Tabanı Programlamaya Giriş

TETİKLEYİCİ. Tetikleyici Ne Zaman Kullanılır? Çeşitli amaçlara uygun olarak tetikleyiciler kullanılabilir.

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

1.adım : Sql serverda Stored procedure oluşturmamız gerekiyor. Şu adımları izliyoruz.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Öğr. Gör. Murat KEÇECĠOĞLU

Üst Düzey Programlama

BİLİŞİM TEKNOLOJİLERİ

C#.Net & Linq (Language Integrated Query)

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

YAPISAL SORGULAMA DİLİ (SQL)

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Çarş. Perş. Öğr. Gör. Murat KEÇECĠOĞLU

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

SORGULAR. Öğr.Gör.Volkan Altıntaş

SQL e Giriş. Uzm. Murat YAZICI

SORGULAR VE ÇEŞİTLERİ II

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

VERİ TABANI YÖNETİM SİSTEMLERİ I

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

MOBİL UYGULAMA GELİŞTİRME

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

HB1002: ORACLE 10G VERĐTABANI PL/SQL ile PROGRAMLAMA (32 saat)

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Bölüm 4: DDL Veri Tanımlama Dili

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

Veritabanı Yönetim Sistemleri (PL/pgSQL - SQL Procedural Language)

HSancak Nesne Tabanlı Programlama I Ders Notları

Veritabanı Tasarımı. Alt Sorgu Temelleri

MT487_2005guz_final_cevaplar (cevaplar vurgulu ve koyu yazılmıştır)

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

1 - Adi A Harfi İle Biten Kişilerin Listesi İçin Hangisi Kullanılmalıdır? Select * From Kisiler Where Adi End A Select * From Kisiler Where Adi Like

Transkript:

SQL Server'daki Stored procedure'lar aynı diğer programlama dillerindeki procedure'lara benzer. SQL deyimlerini içeren komut doayaları hazırlanır ve sunucu üzerinde saklanır. Stored procedure aracılığıyla şu işlemler yapılablir: Input parametrelerini kabul ederek ve birçok değerin geri dönmesini sağlar. Database içindeki işlemleri yapmak için programlama deyimleri içerir. Stored procedure'lar genellikle rutin hale gelmiş işleri kolayca yapmak için geliştirilirler. SQL deyimleriyle yazılan stored procedure'lar sadece ilk kez çalıştırıldıklarında derlenirler. Daha sonraki çalıştırma işlemlerinde derlenmezler ve böylece hızlı bir biçimde çalışma sağlanmış olur. Veritabanımızda Programmability -> Store Procedure düğümünde yer alırlar.

Bir stored procedure "CREATE PROCEDURE" ya da kısaca "CREATE PROC" ifadesi ile yaratılır. Stored procedure'ümüzü oluşturmadan önce şu bilgileri edinmekte fayda var: -CREATE PROCEDURE ifadesinin altında "CREATE DEFAULT, CREATE RULE, CREATE TRIGGER, CREATE VIEW ve CREATE PROCEDURE ifadeleri kullanılamaz. Yani, bir stored procedure oluşturulurken, bu procedure'ün içinde DEFAULT, RULE, TRIGGER, VIEW ve başka bir PROCEDURE oluşturulamaz. Stored procedure oluşturabilmek için ; System Administrator (sysadmin) Database Owner (db_owner) Data Definiton Language Administrator (db_ddladmin) rollerine yada CREATE PROCEDURE izni verilmiş bir role sahip olunmalıdır.

Stored Procedure'lerin Diğer Stored Procedureleri Çağırması (NESTING) : Stored Procedure'ler, diğer stored procedure'leri çağırabilme özelliğine sahiptirler. Yani bir stored procedure çalışırken, aynı anda başka bir stored procedure'ün çalışmasını tetikleyebilir. Bu olaya "Nesting" denir. - Stored procedure'ler 32 kez diğer procedure'leri çağırabilirler. (32 level). Bu sayı 32'yi geçer ise stored procedure zincirinin kırılmasına ve yeni bir stored procedure'ün çağırılamamasına neden olur. Dolayısıyla "Nesting" olayı hiçbir zaman sonsuz döngüye girmez. Maksimum 32 kez "Nesting" olur. - "@@Nestlevel" sistem fonksiyonu ile, stored procedure'ün kaç kez nesting yaptığı araştırılabilir.

Bir stored procedure ikinci bir stored procedure'ü çağırıyor ise; ikinci (çağırılan) stored procedure, birincinin (çağıran) stored procedure'ün yarattığı tüm objelere erişme hakkına sahiptir. Stored Procedure'ler aynı anda birbirlerini de çağırabilirler. Yani X stored procedure'ü Y stored procedure'ünü çağırırken, aynı anda Y stored procedure'ü de X stored procedure'ünü çağırabilir.

STORED PROCEDURE'Ü OLUŞTURMAK (CREATE) : Parametre almayan prosedür oluştururken alttaki yapı kullanılır. Create PROCEDURE <procedure adi> As Begin <Çalıştırılacak Sql Komutları> End

STORED PROCEDURE'Ü OLUŞTURMAK (CREATE) : spurunlerigetir prosedür örneği; CREATE PROCEDURE spurunlerigetir AS BEGIN SELECT Urunler.UrunID,Urunler.UrunAdi FROM Urunler END --Proc çalıştırma EXEC spurunlerigetir

STORED PROCEDURE'Ü OLUŞTURMAK (CREATE) ve ÇALIŞTIRMAK (EXECUTE) : Örnek; use urunler sipariş edilen bir ürünün miktarını ürünler tablosundan düşen miktarı store proc ile yazalım create procedure SiparisiUrunlerdenDusProc(params) as begin select * from urunler declare @mik int=10 declare @uid tinyint=3 insert into siparis values(8,@uid,@mik); update urunler set miktar=miktar @mik from urunler where urunid=@uid select * from urunler end exec SiparisiUrunlerdenDusProc

STORED PROCEDURE'Ü DEĞİŞTİRMEK (ALTER PROCEDURE) : Stored Procedure'leri değiştirme (düzenleme) işini, "ALTER PROCEDURE" ya da kısaca "ALTER PROC" ifadesi ile yapıyoruz. ALTER PROCEDURE ifadesi çalıştığında, SQL Server var olan stored procedure'ün tanımını yenisi ile değiştirir. STORED PROCEDURE'Ü SİLMEK (DROP PROCEDURE) : Stored Procedure'leri silme işini, "DROP PROCEDURE" ya da kısaca "DROP PROC" ifadesi ile yapıyoruz. Bir stored procedure'ü silmeden önce "sp_depends <object name>" sistem stored procedure'ünü kullanılarak, bu stored procedure'lerin hangi objelere dayandığını öğrenmek önemli olabilir.

STORED PROCEDURE'DE PARAMETRE KULLANIMI : Parametre Kullanımı stored procedure'lere işlevsellik kazandırır. Stored Procedure'ler içerisine parametre alabilir (Input Parameters) ve dışarıya parametre ile bir değer döndürebilir (Output Parameters). Parametre ile işlevsellik kazandırılmış bir stored procedure sayesinde bir veritabanını, sadece parametre değerlerini değiştirerek çok amaçlı olarak kullanabiliriz. a) INPUT PARAMETERS : Bir stored procedure içine dışarıdan parametre çağrılabilir. Bu şekildeki parametreler "INPUT parametreler"dir. Stored procedure'e bir ya da daha çok parametre eklenebilir ve bu parametreler CREATE / ALTER PROCEDURE ifadesinin altında tanımlanır. Parametrelerin tanımlanması "@" ile olup, aşağıdaki şekildedir: Syntax: @parameter data_type [=Default]

STORED PROCEDURE'DE PARAMETRE KULLANIMI : Parametre Kullanımı stored procedure'lere işlevsellik kazandırır. Stored Procedure'ler içerisine parametre alabilir (Input Parameters) ve dışarıya parametre ile bir değer döndürebilir (Output Parameters). Parametre ile işlevsellik kazandırılmış bir stored procedure sayesinde bir veritabanını, sadece parametre değerlerini değiştirerek çok amaçlı olarak kullanabiliriz.

STORED PROCEDURE'DE PARAMETRE KULLANIMI : a) INPUT PARAMETERS : Bir stored procedure içine dışarıdan parametre çağrılabilir. Bu şekildeki parametreler "INPUT parametreler"dir. Stored procedure'e bir ya da daha çok parametre eklenebilir ve bu parametreler CREATE / ALTER PROCEDURE ifadesinin altında tanımlanır. Parametrelerin tanımlanması "@" ile olup, aşağıdaki şekildedir: b) OUTPUT PARAMETERS : Stored Procedure'ler OUTPUT parametrelerle dışarıya değer döndürebilir. Dışarıya dönen bu değer çoğu zaman programcının diğer işlemlerinde kullanılabilmek ya da matematiksel hesaplamaların sonuçlarını öğrenmek amacıyla kullanılırlar. Parametre tanımlanmaları Input parametrelerdeki gibi olmakla beraber tek fazlası hem Stored Procedure'ün oluşturulma tarafında hem de Execute tarafında dışarıya değer döndürecek parametrenin yanına OUTPUT yazılmasıdır

STORED PROCEDURE'DE PARAMETRE KULLANIMI : Parametre alan bir fonksiyon yazmak istediğimizde ise prosedür adından sonra parantez içinde parametreleri veriyoruz. Fakat parametre verirken @ işaretini kullanıyoruz. Create PROCEDURE <procedure adi> (<parametre adi,parametre tipi> <varsa varsayılan değeri>) As Begin <Çalıştırılacak Sql Komutları> End

STORED PROCEDURE'DE PARAMETRE KULLANIMI : Parametre alan bir fonksiyon yazmak istediğimizde ise prosedür adından sonra parantez içinde parametreleri veriyoruz. Fakat parametre verirken @ işaretini kullanıyoruz. CREATE PROCEDURE spurungetir ( @ParamID INT=1 ) AS BEGIN SELECT Urunler.UrunID,Urunler.UrunAdi FROM Urunler WHERE Urunler.UrunID=@ParamID END Bu prosedürün kullanımı ise EXEC spurungetir 1

GERİYE DEĞER DÖNDÜREN PROSEDÜRLER Geriye değer döndüren prosedürleri anlamak için birkaç terimi daha bilmemiz gerekiyor. Bunlardan birisi out veya output anahtar kelimesidir. Bu kelimeleri kullanarak, hangi parametrenin değer döndürdüğünü SQL SERVER a tanıtıyoruz.. CREATE PROCEDURE spurunadetgetir ( @UrunID INT, @UrunAdet INT OUTPUT ) AS BEGIN

GERİYE DEĞER DÖNDÜREN PROSEDÜRLER Dönüş değeri olan Proc'lar Bir ürünün verilen sipariş miktarları toplamını ve ürünün ismini yazdıran stor proc create procedure UrunSipMiktar(@uid tinyint,@urunad nvarchar(50) out,@mik int OUTPUT) as begin select @urunad=urunad from urunler where urunid=@uid select @mik=sum(satismiktar) from siparis where siparisid=@uid end declare @Umik int=0 declare @Uadi nvarchar(50) exec UrunSipMiktar 2,@Uadi out,@umik out if(@umik>0) print @Uadi+' ürününün toplam sipariş miktarı:'+ cast(@umik as nvarchar(4)) Else raiserror( ürün yok,16,1) i t @U di ' ü ü ü k!'

SQL Stored Procedure -Örnek Aşağıdaki stored proc ları hazırlayıp çalıştırınız. Sipariş miktar aralığı verilen ürünlerin listesini bulan stored proc? Örn: sipariş 100,200 sipariş miktarı 100-200 arası stored proc. Verilen bir sipariş numarası için; siparişin siparişler listesi içinde var ise bilgilerini yazdırıp (ürün adı ile beraber) yoksa hata mesajını yazdıran stored proc yazınız. (sipariş no ->in, sipariş Id,sipariş Miktarı ve Ürün adı, ->out) Girilen ürün adına göre ürünün stoktaki ederini (mik*bfiyat) hesaplattırıp eğer; eder 4000 altında ise ederi düşük eder 4000-10000 arası ise ederi normal eder 10000 üzeri ise ederi yüksek yazdırılacak stored proc yazınız (ürün adı->in, «eder»->out, case ile «eder» kontrolü) Örn: Kalem 1500, ederi düşük Defter 2500, ederi normal

-Örnek KENDİ substring komutumuz create proc strkopar(@metin varchar(50),@baslangic int,@adet int) as begin declare @uzunluk int, @sonuc varchar(50),@yenideger int, @sagdan varchar(50) set @uzunluk = (select len(@metin)) set @yenideger = @uzunluk @baslangic +1 set @sagdan = (select right(@metin,@yenideger)) set @sonuc = (select left(@sagdan,@adet)) print @sonuc end exec strkopar "kocaeli",3,2

EXTENDED STORED PROCEDURE'LER : Extended stored procedure'ler bir DLL içindeki fonksiyonlar olup, SQL Server'ın işlevselliğini artırmaktadırlar. Extended stored procedure'leri sadece MASTER veritabanında iken çalıştırılabilir. Use Master EXEC xp_cmdshell 'dir c:\' HATA oluştu..cmdshell enable yapılmalı cmdshell enable yapılıyor sp_configure ile Use Master EXEC sp_configure 'show advanced options', 1; gelişmiş ayarlar. RECONFIGURE; özelliği açıyoruz EXEC sp_configure 'xp_cmdshell', 1; konfigürasyonu güncelle RECONFIGURE; Artık cmdshell kullanılabilir EXEC xp_cmdshell 'dir c:\windows'

EXTENDED STORED PROCEDURE'LER : Tüm xp lerin listesi SELECT * FROM master.sys.extended_procedures GO

DROP STORED PROCEDURE'LER : Stored Proc silmek için DROP PROCEDURE kullanılır DROP PROCEDURE listeleproc