STORED PROCEDURE LER (Saklı Yordamlar)



Benzer belgeler
SAKLI YORDAM (Stored Procedure) Sibel Somyürek

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.

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

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Oracle da kullanılan veri tipleri:

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

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

SQL Stored Procedure

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

KULLANICI TANIMLI FONKSİYONLAR

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

SQL Komutları (2) Uzm. Murat YAZICI

«BM364» Veritabanı Uygulamaları

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

EXISTS VE NOT EXISTS fonksiyonları

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.

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

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.

SQL TRIGGERS (Tetikleyiciler)

Veritabanına Uygulanması

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

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

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

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

C#.Net & Linq (Language Integrated Query)

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

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

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

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

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

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

VERİTABANI. SQL (Structured Query Language)

Üst Düzey Programlama

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

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

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

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

SQL e Giriş. Uzm. Murat YAZICI

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

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

VERİ TABANI ve YÖNETİMİ

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

PostgreSQL ve PL/pgSQL

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

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

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

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

VERİTABANI Veritabanı Yönetimi

YAPISAL SORGULAMA DİLİ (SQL)

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

Veritabanı. SQL (Structured Query Language)

PostgreSQL ve PL/pgSQL

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

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

Veri Tabanı ve Yönetimi

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

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

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

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

ACCESS PLATFORMUNDA SQL

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

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

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

Aşağıdaki tabloyu inceleyin. Yeni kayıt girme, var olan bir kaydı silme veya güncelleme işlemlerini bu tabloya göre yapacağız.

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

Mysql Veritabanı Komutları

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

Veri Tabanı Yönetim Sistemleri Bölüm - 4

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

İNTERNET PROGRAMCILIĞI DERSİ

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

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

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

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

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

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

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Veri Tabanı Tasarım ve Yönetimi

SQL Kod ile Tablo Oluşturma

Veri Tabanı Programlamaya Giriş

Veri Tabanı Hafta Dersi

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

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

HSancak Nesne Tabanlı Programlama I Ders Notları

1. Araçların tüm bilgilerini ve bağlı oldukları kiralama noktasının adres ve telefonunu içeren tam listesi:

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

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

Bu uygulamayı yapabilmek için SQL Server'da Query Analyzer kullanabilmekle beraber, ADO.NET bilgisine sahip olmanız gerekir.

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

BİLİŞİM TEKNOLOJİSİNİN TEMELLERİ DERSİ

Çok tablolu sorgulamalar

BİLİŞİM TEKNOLOJİLERİ

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

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

ALGORİTMA VE PROGRAMLAMA II

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

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

VERİTABANI ve YÖNETİMİ

Veritabanı Tasarımı. Veritabanı Hareketleri

Transkript:

STORED PROCEDURE LER (Saklı Yordamlar) Eskiden yazılımlar, sadece prosedür denilen kod parçalarından oluşurdu. Her prosedür belli bir işlevi yerine getirmek için yazılmış kod parçalarıdır. Mesela, 2 sayı alıp, bunların toplamını hesaplayan kod parçasını toplayıcı adında bir prosedür içinde paketleyebilir. Bir prosedür, başka bir prosedür içinden çağrılabilir. Bu da sık yapılan işlemler için yazılmış kodların bir defa yazılıp çok defa kullanılmasını, böylelikle programlamayı kolaylaştırmayı amaçlar. Birden fazla işlemi, paketlenmiş bir halde, bir tek komut ile çalıştırmamız gerktiğinde Stored Procedureler kullanılır. İşlemlerden kastedilen Transact SQL ile yapılan her şeydir. 1

Bir stored procedure oluşturulduktan sonra veritabanı sunucunda saklanır. Her ihtiyaç duyulduğunda defalarca çağrılabilir. Network bazlı çalışmalarda ağ trafiğini azaltır, sistem performansını yükseltir. Örnek bir c++ prosedürü void hesap (int a, int b) {.. } Hesap : prosedürün adı a ve b, bu prosedürün parametreleri Stored Prosedure lerin yapısı parametreli olabilir. Parametresiz olabilir İstendiğinde parametreden veri geri dönebilir. 2

İstendiğinde parametreye varsayılan değer atabilir Her türlü sql deyimi çalıştırılabilir. Genel Oluşturma ifadesi CREATE : oluşturma ALTER : Yapı değiştirme DROP : Silme CREATE PROCEDURE prosedüradı varsaparametreler AS.. sql deyimleri (prosedür içinde çalışması istenen).. Örnek Prosedür CREATE PROCEDURE sphesaplarliste AS SELECT * FROM Hesaplar 3

GO Yukarıdaki prosedürü çalıştıralım EXEC sphesaplarliste Örnek: HesapNo parametre olsun, bu hesap nosundaki bilgiyi veren stored procedure u yazınız. CREATE PROCEDURE sphesap @HesapNo varchar(10) AS SELECT * FROM Hesaplar WHERE HesapNo=@HesapNo Go Çalıştıralım EXEC sphesap '0415' Parametre yazım şekilleri 4

Parametre isimlerinin başında, değişkenler gibi @ sembolü vardır. Aynen değişkenler gibi tanımlanır. @Parametre1 veritipi1, @parametre2 veritipi2,. Örnek @ad varchar(20), @soyad varchar(20), @para Money Eğer parametrede varsayılan değer var ise varsayılanlı olarak aşağıdaki gibi tanımlanır. @ad varchar(20)= Kenan Yukarıdaki prosedürde varsayılan 0415 olsun. ALTER PROCEDURE sphesap @HesapNo varchar(20)= 0415 AS 5

SELECT * from hesaplar where HesapNo=@HesapNo Go Neden alter? sphesap veritabanında az önce mevcuttu, biz bunu değiştiriyoruz. Yukarıdaki prosedürü çalıştıralım EXEC sphesap Çıktısı @HesapNo parametresinin varsayılan değeri 0415 olduğu için, 0415 e ait değeri listeler EXEC sphesap 6804 Çıktısı: @HesapNo değeri 6804 olduğu için, 6804 listelenir. Eğer parametrede veri geri dönmesi istenirse OUTPUT kelimesi kullanılır. @Basarim int OUTPUT 6

@Basarim parametresi ile amacımız, veri göndermek değil veri olmak, prosedürden bilgi öğrenmek içindir. Tablo : Hesaplar HesapNo Adi Soyadi Bakiye 2053 İbrahim Öz 12500 6804 Hasan Bülbül 5000 2543 Neşe Şen 4150 0415 Ahmet Uzun -1000 2749 Ayşe Yaman 14000 0324 Halil Doğru 12500 Soru: Hesaplar arası para transferi yapan bir prosedür oluşturunuz. Ancak transfer sonucu bakiyenin sıfırın altına düşmesine izin vermeyin. Çözümü: Kullanacağımız parametreleri tanımlayalım, AlacaklıHesapNo, 7

BorcluHesapNo, ParaMiktari Prosedür Adı : spparatransfer olsun. CREATE POCEDURE spparatranfer @AlacakliHesapNo varchar(10), @BorcluHesapNo varchar(10), @ParaMiktari Money AS. SQL deyimlerini yazacağım. Prosedür içinde çalışacak sql kodunu yazalım. Borçlu hesabın sıfırın altına düşüp, düşmediğinin kontrolünü yapalım. Bunu için Borçlu hesabın bakiyesini hesaplayacağız. Bu hesabı IF deyimi ile @ParaMiktarı ile karşılaştıracağız. Bulduğumuz değer @ParaMiktar ından 8

büyük ise transferi gerçekleştireceğiz, değilse transfer olmadığını bildireceğiz. Bu amaçla IF deyimi içine alt sorgu yazacağım IF (select Bakiye from Hesaplar where HesapNo = @BorcluHesapNo) > @ParaMiktari Para tranferini gerçekleştir. ELSE Para transferinin olmadığını bildir. Mavi renkli olan alt sorgudan @BorcluHesapNo numarasının bakiyesini verir. Bu bakiye @ParaMiktarından büyük olduğunda para tranferi gerçekleşir. Şimdi tümünü tek kod altında toplayalım. 9

CREATE PROCEDURE spparatransfer @AlacakliHesapNo varchar(10), @BorcluHesapNo varchar(10), @ParaMiktari Money As IF (select Bakiye from hesaplar where HesapNo=@BorcluHesapNo) > @ParaMiktari UPDATE Hesaplar SET Bakiye = Bakiye + @ParaMiktari WHERE HesapNo = @AlacakliHesapNo UPDATE Hesaplar SET Bakiye = Bakiye - @ParaMiktari WHERE HesapNo=@BorcluHesapNo ELSE PRINT Bakiye Yetersiz. Tranfer olmadı 10

Örnek: Yukarıdaki prosedürden tranfer gerçekleştiğinde 1 değerini, gerçekleşmediğinde 0 değerini parametre geri döndüren kodu yazınız.bu prosedürü çalıştırarak test ediniz. ALTER PROCEDURE spparatransfer @AlacakliHesapNo varchar(10), @BorcluHesapNo varchar(10), @ParaMiktari Money, @Basarili tinyint OUTPUT As IF (select Bakiye from hesaplar where HesapNo=@BorcluHesapNo) > @ParaMiktari UPDATE Hesaplar SET Bakiye = Bakiye + @ParaMiktari WHERE HesapNo = @AlacakliHesapNo 11

UPDATE Hesaplar SET Bakiye = Bakiye - @ParaMiktari WHERE HesapNo=@BorcluHesapNo SELECT @Basarili=1 ELSE PRINT Bakiye Yetersiz. Tranfer olmadı SELECT @Basarili=0 Çalıştıralım DECLARE @Basarili tinyint EXEC spparatransfer '0415', '2543', 5000, @Basarili OUTPUT SELECT @Basarili Çıktısı 0 12

EXEC deyimi prosedürün çalışmasını sağlar. Exec deyimini çalıştırırken parametreler, prosedürdeki sırada olmalıdır. Eğer parametreler isimleri ile yazılırsa, aynı sırada olma koşulu yoktur. Yukarıdaki deyim aşağıdaki gibi de yazılabilir EXEC spparatranfer @AlacakliHesapNo= 2053, @BorcluHesapNo= 0415, @ParaMiktari=5000, @Basarili=@Basarili OUTPUT Örnek HesapNosuna göre bakiye azaltıp, arttıran bir prosedür yazınız. Bu prosedürde parametreler: HesapNo, Artim ve Islem olsun. Islem değeri 0 ise artsın,1 ise azalsın. Islemin varsayılan değeri 0 olsun. Çözüm 13

CREATE PROCEDURE spbakiyearttirazalt @HesapNo varchar(10), @Artim Money, @Islem tinyint=0 AS IF @Islem=0 Update hesaplar set bakiye=bakiye+@artim where HesapNo=@HesapNo ELSE Update hesaplar set bakiye = bakiye - @Artim where HesapNo=@HesapNo Çalıştıralım. Test için ayrı ayrı çalıştıralım. EXEC spbakiyearttirazalt @HesapNo='2749',@Islem=0, @Artim=2000 14

EXEC spbakiyearttirazalt @HesapNo='2749',@Islem=1, @Artim=2000 EXEC spbakiyearttirazalt @HesapNo='2749', @Artim=2000 15