Fonksiyonlar çok benzer Saklı Prosedürler (SP), fark bazı ayrıntılarda yatmaktadır, en önemlisi, bir SP birden fazla döndürebildiğinde yalnızca bir değer döndürmeleridir, ayrıca sonuçta elde edilen değeri depolamak için bir değişkene ihtiyacımız yoktur, bu nedenle bir SELECT içinde kullanımı çok daha kolaydır .
İşlev OluşturmaBir fonksiyonun amacı, kullanımları daha kolay olacak şekilde belirli öğelerin arkasındaki mantığı yalıtmaktır, bu şekilde veritabanını ve çalışmasını belgeleyebilir ve temel ile iletişim kurabilecek uygulamanın eylemlerini basitleştirebiliriz. veri. Bir fonksiyon oluşturmak için aşağıdaki elemanları kullanacağız:
- NS Sorgu Kutusu, fonksiyonu yazabileceğimiz yere.
- Sınırlayıcının değişimi.
- Fonksiyonun düzenleme ve manipülasyon mekanizması.
Bir örnek üzerinden bir fonksiyonun nasıl tanımlandığını görelim:
CREATE FUNCTION get_country_name (param_country_code CHAR (2)) VARCHAR'I DÖNDÜR (50) SQL VERİLERİNİ OKUYOR DECLARE var_country_name VARCHAR (50) DEFAULT 'bulunamadı'; NEREDE ülkeden açıklama SEÇİN kod = param_country_code INTO var_country_name; RETURN var_country_name; SON //Gördüğümüz gibi, sözdizimi şuna çok benzer: SP, sadece burada değerlerini tanımlamıyoruz İÇİNDE Y DIŞARI değilse, girdikleri parametreleri tanımlarız ve olacak tek bir değer bildiririz. GERİ DÖNMEK.
bölümüne gittiğimizde Rutinler Veritabanındaki yapı sayfasında, bunun aşağıdaki şekilde yansıtıldığını göreceğiz:
Fonksiyonumuzu oluşturduktan sonra nasıl test edebileceğimize bakalım, test olarak kullandığımız bu fonksiyon ne yapıyorsa bir ülke tablosuna başvurup, bir kod istediğimizde bir ülkenin adını döndürüyor. bulamayınca bize döner bulunamadı:
CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) test olarak SEÇ;Sonuçları bir dizgede birleştirmek için sadece bir CONCAT ile bir seçim yapıyoruz ve aşağıdakileri elde edeceğiz:
ca-> Kanada, zz-> bulunamadıGördüğümüz gibi, her ülkenin ayrı ayrı danışacağı sorguları oluşturmaktan çok daha kolay.
tetikleyicilerNS tetikleyiciler işlevlerinden farklıdır ve Saklı ProsedürlerBunların kullanıcı tarafından çağrılmasına gerek yoktur, bağlı oldukları tablo üzerinde bir eylem yürütüldüğünde ortaya çıkarlar, bu da bizi fonksiyonların diğer farklılığına götürür, genel olmalarıdır; NS tetikleyiciler belirli bir tabloya bağlılarsa.
nasıl oluşturulacağını görelim Tetiklemek:
HER SATIR İÇİN kitaba EKLEŞTİRDİKTEN SONRA TETİKLEYİCİ OLUŞTUR BAŞLAYIN yazar SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; SON //Gördüğümüz gibi, sorgu kutusunun tüm talimatlarını dahil edebilmemiz için sorgu kutusuna // yeni bir sınırlayıcı tanımlamamız gerekiyor. Tetiklemek, örnek olması durumunda, onu Ekledikten Sonra yani, bir ekleme yaptıktan ve ardından tanımlanan eylemi yürüttükten sonra, bu, Veritabanının eylemleri olduğu gibi özerk bir şekilde yönetmesine yardımcı olur.
Bir kere Tetiklemek Tablo yapısı sayfasına gittiğimizde mevcut olduğunu göreceğiz: