SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Benzer belgeler
STORED PROCEDURE LER (Saklı Yordamlar)

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.

KULLANICI TANIMLI FONKSİYONLAR (Devam)

«BM364» Veritabanı Uygulamaları

Oracle da kullanılan veri tipleri:

SQL Stored Procedure

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 (Devam)

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

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

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

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

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

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

SQL TRIGGERS (Tetikleyiciler)

KULLANICI TANIMLI FONKSİYONLAR

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

SQL Komutları (2) Uzm. Murat YAZICI

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

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

Veritabanına Uygulanması

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

YAPISAL SORGULAMA DİLİ (SQL)

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

PostgreSQL ve PL/pgSQL

PostgreSQL ve PL/pgSQL

EXISTS VE NOT EXISTS fonksiyonları

VERİ TABANI ve YÖNETİMİ

C#.Net & Linq (Language Integrated Query)

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

VERİTABANI Veritabanı Yönetimi

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

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.

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

Üst Düzey Programlama

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

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

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

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

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

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

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

BMB202. Veritabanı Yönetimi Ders 8. Stored Procedure (Saklı Yordamlar), Trigger (Tetikleyiciler), Transactions, Yetkilendirme (Authorization)

MOBİL UYGULAMA GELİŞTİRME

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

Sayfa 1 / 8. Tabo yapıları

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

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.

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

VERİTABANI. SQL (Structured Query Language)

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

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

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

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

ACCESS PLATFORMUNDA SQL

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

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

Mysql Veritabanı Komutları

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

Örnek: HAFTA12B isimli bir kullanıcı tanımlayalım. Bu kullanıcıya gerekli yetkileri verelim.

Tetikleyiciler (TRIGGER) Tetikleyiciler ne zaman kullanılırlar. Ardı Sıra Tetikleyiciler (After Triggers) Örnek

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

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

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

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

Transaction ve Ortak Zamanlılık. Sibel SOMYÜREK

Veri Tabanı Hafta Dersi

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

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.

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

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

Veri Tabanı Programlamaya Giriş

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

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

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

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

BİLİŞİM TEKNOLOJİLERİ

Veritabanında Saklı Yordamlar: Bir Veritabanı Tasarımı ve Web Uygulaması

VERİTABANI ve YÖNETİMİ

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL-2

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

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

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

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

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

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

SQL e Giriş. Uzm. Murat YAZICI

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

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

Veritabanı Tasarımı. Alt Sorgu Temelleri

SQL Kod ile Tablo Oluşturma

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

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

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

Liquibase ile Veri Tabanı Değişiklik Yönetimi

Fatura Dinamik Kodlama İyileştirmeleri

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

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

MySQL'e Giris. Eger bir sorun ile karsilasmadan veritabanina baglanabildiyseniz karsiniza asagidaki gibi bir ekran gelecektir.

Transkript:

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Saklı Yordam Saklı yordamlar veritabanı kataloğunda saklanan SQL kod bloklarının tanımlanmasıdır. Mesela, iki sayı alıp bunların toplamlarını hesaplayan bir kod parçasını toplayıcı adında bir prosedür içerisine paketleyebiliriz. Saklı yordamlar pek çok sorgulamayı daha kolaylaştırır. MYSQL 5.0.1 versiyonundan itibaren MySQl de yer alır.

Saklı Yordam Saklı yordamlar sadece ilk kez çalıştırıldıklarında derlenirler. Daha sonraki çalıştırma işlemlerinde derlenmezler. Bu sayede uygulamalar hız kazanılmış olur. Yani normal kullanılan bir SQL sorgusunun tekrar tekrar çalıştırılmasına oranla daha fazla performans elde edilmesini sağlarlar. Bir kez yazılıp, tekrar tekrar kullanıldığı için modüler bir yapıda program geliştirilmiş olur

Saklı Yordam Oluşturulan veya var olan saklı yordamlar dışarıdan parametre alabilirler. Bu parametrelere göre tanımlanan işlemleri yaparlar ve/veya dışarıya değer kümesi dönderirler.

Neden kullanılır? 1. Kodların yeniden kullanımı Aynı veritabanını kullanan farklı uygulamalar tekrar aynı kodları yazmak yerine saklı yordamları kullanabilir. 2. Daha kolay kodlama Bir geliştirici sorgu ya da tabloların tam olarak bilmeden bir saklı yordamı çağırabilir. Veritabanını daha kullanıcı dostu kılarlar. Call profilikaydet(1, ayşe, ak ) Böylece veritabanı yöneticisi geliştiricileri bilgilendirmeden veritabanını tekrar yapılandırabilir.

Neden kullanılır? 3. API lerden ötürü güvenlik Saklı yordamlar vertabanında API gibi davranabilirler. Eğer kullanıcılar sadece saklı yordamları kullanma iznine sahipse, sadece bu yordamlara verilen işlemleri gerçekleştirebilirler. Kullanıcının bir tabloya erişim izni olmasa bile o tablo üzerinde işlem yapan bir saklı yordamı kullanma izni olabilir.

Saklı Yordam Tetikleyicilerden farklı olarak prosedürler uygulama tarafından ya da script tarafından bir şekilde çağrılmak zorundadırlar. Otomatik devreye giremezler.

Saklı Prosedür Yaratmak CREATE PROCEDURE ya da kısaca CREATE PROC ifadesi ile yaratılır.

Saklı Prosedür Yaratmak CREATE TABLE tablo ( ) id SMALLINT( 3 ) NOT NULL, ad VARCHAR( 25 ) NOT NULL, soyad VARCHAR( 25 ) NOT NULL

Saklı Prosedür Yaratmak DELIMITER // CREATE PROCEDURE veriekle() INSERT INTO tablo(id,ad,soyad) VALUES (1,"Ayşe","Ak") // DELIMITER ;

Saklı Yordama değer gönderme/alma Saklı yordamlar parametreli olabilir. Parametreler saklı yordamları daha esnek ve kullanılabilir kılar. Mysql de saklı yordam parametreleri üç yöntem belirtecinden birini alabilir. IN OUT ve INTOUT

IN Değişkenin değerine erişilir ancak değişiklik yapılamaz. OUT Değişkenin değerine erişilemez ancak değişiklik yapılabilir. INTOUT Değişkenin değerine erişilir ve değişiklik yapılabilir.

Parametre girilmezse IN parametresi girilmiş gibi algılar

Saklı yordamı çağırmak için CALL deyimi kullanılır CALL saklıprosedürismi(); CALL deneme();

Hata: #1146 - Table 'elektronik.elektronik' doesn't exist < MYSQL 5.1.7 versiyon Güncellemek gerekli

Saklı yordama parametre gönderme DELIMITER // CREATE PROCEDURE verieklepm (eskiad VARCHAR(25)) UPDATE tablo SET ad='fatma' where ad=eskiad // DELIMITER ; CALL verieklepm( Ayşe );

IN parametresi-örnek DELIMITER // CREATE PROCEDURE veriekle3 (IN eskiad VARCHAR(25)) UPDATE tablo SET ad='fatma' where ad=eskiad // DELIMITER ; CALL verikle3( Ayşe );

IN parametresi-örnek 2 DELIMITER // CREATE PROCEDURE desikenleveriekle (IN eskiad VARCHAR(25)) UPDATE tablo SET ad='fatma' where ad=eskiad // DELIMITER ; SET @eskiad='emine'; CALL desikenleveriekle(@eskiad);

Değişken tanımlama Saklı Yordam içerisinde kullanabileceğimiz değişkenler tanımlayabiliriz. Değişken tanımlama DECLARE direktifi ile yapılır. DECLARE degisken_ismi veri_tipi(boyutu) DEFAULT varsayılan_deger;

IN parametresi DELIMITER // CREATE PROCEDURE veriekle3 (IN eskiad VARCHAR(25)) UPDATE tablo SET ad='fatma' where ad=eskiad // DELIMITER ; CALL veriekle3( ayşe )

OUT parametresi DELIMITER // CREATE PROCEDURE kayitsayisi (OUT toplam INT(11)) SELECT COUNT(*) AS toplam FROM tablo // DELIMITER ; CALL kayitsayisi(@toplam)

OUT parametresi DELIMITER // CREATE PROCEDURE kayitsayisi2 (OUT toplam INT(11)) SELECT COUNT(*) INTO toplam FROM tablo // DELIMITER ; CALL kayitsayisi2(@toplam)

Birden fazla parametre DELIMITER // CREATE PROCEDURE kayitsayisi2 (IN eskiad VARCHAR(25), OUT b INT(11)) SELECT count(*) INTO b FROM tablo where ad=eskiad // DELIMITER ; CALL kayitsayisi2('fatma', @b);

INOUT parametresi örnek 1 DELIMITER // CREATE PROCEDURE deneme8 (INOUT n INT(11)) UPDATE tablo SET id=id+5 WHERE id=n; // DELIMITER ; SET @n=1; Call deneme8(@n);

INOUT parametresi örnek 2 CREATE TABLE kayit( a INT( 11 ) NOT NULL )

INOUT parametresi örnek 2 DELIMITER // CREATE PROCEDURE kayitsayisiaktar (IN adi VARCHAR(25), OUT k INT(11)) BEGIn SELECT count(*) INTO k FROM tablo where ad=adi; INSERT INTO kayit(a) VALUES (k); END // DELIMITER ; CALL kayitsayisiaktar ('fatma', @k);

Prosedürleri göstermek Show Procedure Status

Saklı yordamı kaldırmak DROP pocedure prodesür_adı DROP PROCEDURE veriekle;

GÖREV okul isimli yeni bir veritabanı oluşturun Dersler (derskod,ad, saat) isimli bir tablo oluşturun. 1. Çalıştırıldığında ders tablosuna 2 adet derse ait kayıt ekleyen saklı yordamı oluşturun. 2. Ders kodu gönderilen dersin adını yeni ders adı ile güncelleyen saklı yordamı oluşturun ve çalıştırın. 3. Derssayisi (adet) isimli bir tablo oluşturun. 4. Dersler tablosundaki ders sayısını derssayisi tablosuna kaydeden bir saklı yordam oluşturun ve çalıştırın. 5. INOUT parametresini kullanabileceğiniz bir saklı yordam senaryosu düşünerek bunun için gereklki tabloları oluşturun, saklı yordamı yazın ve çalıştırın. 6. Saklı yordamları görüntüleyin 7. Oluşturduğunuz saklı yordamlardan birini silin.

Kaynakça http://www.mysqltutorial.org/stored-proceduresparameters.aspx http://www.sinanakyazici.com/mysqlde-storedprocedure-sakli-yordam-kullanimi http://emircem.wordpress.com/2011/07/20/mysqldesakli-yordamlar/