Oracle Örneklerle PL/SQL Saklı Prosedür ve Fonksiyonlar
Prosedürler ve Fonksiyonlar, veritabanı nesneleri olarak oluşturulabilen ve veritabanına kaydedilebilen alt programlardır. Diğer blokların içinde de çağrılabilir veya yönlendirilebilirler.
Bunun dışında bu iki alt program arasındaki temel farkları ele alacağız. Ayrıca, şu konuyu da tartışacağız: Oracle yerleşik işlevler.
PL/SQL Alt Programlarındaki Terminolojiler
PL/SQL alt programlarını öğrenmeden önce bu alt programların parçası olan çeşitli terminolojileri tartışacağız. Aşağıda tartışacağımız terminolojiler bulunmaktadır.
Parametre
Parametre herhangi bir geçerli değişkenin değişkeni veya yer tutucusu PL/SQL veri türü PL/SQL alt programının değerleri ana kodla değiştirdiği. Bu parametre alt programlara girdi verilmesini ve bu alt programlardan veri çıkarılmasını sağlar.
- Bu parametreler, oluşturma sırasında alt programlarla birlikte tanımlanmalıdır.
- Bu parametreler, değerlerin alt programlarla etkileşimini sağlamak için bu alt programların çağırma ifadesine dahil edilir.
- Alt programdaki parametrenin veri tipi ile çağıran ifadenin veri tipi aynı olmalıdır.
- Bu tip için boyut dinamik olduğundan, parametre bildirimi sırasında veri tipinin boyutundan bahsedilmemelidir.
Amaçlarına göre parametreler şu şekilde sınıflandırılır:
- IN Parametresi
- ÇIKIŞ Parametresi
- GİRİŞ ÇIKIŞ Parametresi
IN Parametresi
- Bu parametre alt programlara girdi vermek için kullanılır.
- Alt programların içindeki salt okunur bir değişkendir. Değerleri alt program içerisinde değiştirilemez.
- Çağıran ifadede bu parametreler bir değişken veya değişmez bir değer veya bir ifade olabilir; örneğin '5*8' veya 'a/b' gibi aritmetik ifade olabilir; burada 'a' ve 'b' değişkenlerdir .
- Varsayılan olarak parametreler IN türündedir.
ÇIKIŞ Parametresi
- Bu parametre alt programlardan çıktı almak için kullanılır.
- Alt programların içindeki okuma-yazma değişkenidir. Değerleri alt programların içinden değiştirilebilir.
- Çağıran ifadede bu parametreler her zaman geçerli alt programlardan gelen değeri tutacak bir değişken olmalıdır.
GİRİŞ ÇIKIŞ Parametresi
- Bu parametre hem alt programlara girdi vermek hem de alt programlardan çıktı almak için kullanılır.
- Alt programların içindeki okuma-yazma değişkenidir. Değerleri alt programların içinden değiştirilebilir.
- Çağıran ifadede bu parametreler her zaman alt programlardan gelen değeri tutacak bir değişken olmalıdır.
Bu parametre tipi alt programlar oluşturulurken belirtilmelidir.
DÖNÜŞ
RETURN, derleyiciye kontrolü alt programdan çağıran ifadeye geçirmesi talimatını veren anahtar kelimedir. Alt programda RETURN basitçe kontrolün alt programdan çıkması gerektiği anlamına gelir. Kontrol cihazı alt programda RETURN anahtar sözcüğünü bulduğunda bundan sonraki kod atlanacaktır.
Normalde ana blok veya ana blok alt programları çağırır ve daha sonra kontrol bu ana bloktan çağrılan alt programlara geçer. Alt programdaki RETURN, kontrolü ana bloklarına geri döndürecektir. Fonksiyonlarda RETURN deyimi aynı zamanda değeri de döndürür. Bu değerin veri tipi her zaman fonksiyon bildirimi sırasında belirtilir. Veri türü herhangi bir geçerli PL/SQL veri türünde olabilir.
PL/SQL'de Prosedür Nedir?
A Prosedür PL/SQL'de isimle çağrılabilen bir grup PL/SQL ifadesinden oluşan bir alt program birimidir. PL/SQL'deki her prosedürün kendisine başvurulabileceği ve çağrılabileceği kendine özgü bir adı vardır. Bu alt program ünitesi Oracle veritabanı bir veritabanı nesnesi olarak saklanır.
Not: Alt program bir prosedürden başka bir şey değildir ve ihtiyaca göre manuel olarak oluşturulması gerekir. Oluşturulduktan sonra veritabanı nesneleri olarak depolanacaklar.
PL/SQL'deki Prosedür alt program biriminin özellikleri aşağıdadır:
- Prosedürler, bir programın depolanabilen bağımsız bloklarıdır. veritabanı.
- Bu PLSQL prosedürlerine çağrı, PL/SQL ifadelerini yürütmek için adlarına başvurularak yapılabilir.
- Esas olarak PL/SQL'de bir işlemi yürütmek için kullanılır.
- İç içe geçmiş bloklara sahip olabileceği gibi, diğer blokların veya paketlerin içine de tanımlanıp yuvalanabilir.
- Bildirim bölümü (isteğe bağlı), yürütme bölümü, istisna işleme bölümü (isteğe bağlı) içerir.
- Değerler aktarılabilir Oracle prosedür veya prosedürden parametreler aracılığıyla getirilir.
- Bu parametreler çağıran ifadeye dahil edilmelidir.
- SQL'deki bir Prosedür, kontrolü çağıran bloğa döndürmek için bir RETURN ifadesine sahip olabilir, ancak RETURN ifadesi aracılığıyla herhangi bir değer döndüremez.
- Prosedürler doğrudan SELECT ifadelerinden çağrılamaz. Başka bir bloktan veya EXEC anahtar sözcüğü aracılığıyla çağrılabilirler.
Sözdizimi
CREATE OR REPLACE PROCEDURE <procedure_name> ( <parameterl IN/OUT <datatype> .. . ) [ IS | AS ] <declaration_part> BEGIN <execution part> EXCEPTION <exception handling part> END;
- CREATE PROCEDURE derleyiciye yeni prosedür oluşturma talimatını verir. Oracle. 'OR REPLACE' anahtar kelimesi, derlemeye mevcut prosedürü (varsa) mevcut prosedürle değiştirme talimatını verir.
- Prosedür adı benzersiz olmalıdır.
- Saklı prosedürde 'IS' anahtar kelimesi kullanılacaktır. Oracle diğer bazı blokların içine yerleştirilmiştir. Prosedür bağımsızsa 'AS' kullanılacaktır. Bu kodlama standardı dışında her ikisi de aynı anlama sahiptir.
Örnek1: Prosedür oluşturma ve EXEC kullanarak çağırma
Bu örnekte, bir oluşturacağız Oracle adı girdi olarak alan ve karşılama mesajını çıktı olarak yazdıran prosedür. Prosedürü çağırmak için EXEC komutunu kullanacağız.
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2) IS BEGIN dbms_output.put_line (‘Welcome '|| p_name); END; / EXEC welcome_msg (‘Guru99’);
Kod Açıklaması:
- Kod satırı 1: 'welcome_msg' adı ve 'IN' tipinde 'p_name' parametresi ile prosedür oluşturuluyor.
- Kod satırı 4: Giriş adını birleştirerek karşılama mesajını yazdırma.
- Prosedür başarıyla derlendi.
- Kod satırı 7: 'Guru99' parametresi ile EXEC komutunu kullanarak prosedürün çağrılması. Prosedür gerçekleştirilir ve mesaj “Welcome Guru99” olarak yazdırılır.
İşlev Nedir?
İşlevler bağımsız bir PL/SQL alt programıdır. PL/SQL prosedürü gibi, fonksiyonların da başvurulabileceği benzersiz bir adı vardır. Bunlar PL/SQL veritabanı nesneleri olarak saklanır. Aşağıda fonksiyonların bazı özellikleri verilmiştir.
- Fonksiyonlar esas olarak hesaplama amacıyla kullanılan bağımsız bir bloktur.
- İşlev, değeri döndürmek için RETURN anahtar sözcüğünü kullanır ve bunun veri türü, oluşturma sırasında tanımlanır.
- Bir İşlev ya bir değer döndürmeli ya da istisnayı artırmalıdır; yani işlevlerde geri dönüş zorunludur.
- DML ifadesi olmayan fonksiyon doğrudan SELECT sorgusunda çağrılabilirken, DML işlemi olan fonksiyon sadece diğer PL/SQL bloklarından çağrılabilir.
- İç içe geçmiş bloklara sahip olabileceği gibi, diğer blokların veya paketlerin içine de tanımlanıp yuvalanabilir.
- Bildirim bölümü (isteğe bağlı), yürütme bölümü, istisna işleme bölümü (isteğe bağlı) içerir.
- Değerler fonksiyona aktarılabilir veya parametreler aracılığıyla prosedürden alınabilir.
- Bu parametreler çağıran ifadeye dahil edilmelidir.
- Bir PLSQL işlevi, değeri RETURN kullanmak dışındaki OUT parametreleri aracılığıyla da döndürebilir.
- Her zaman değeri döndüreceğinden, çağırma ifadesinde değişkenleri doldurmak için her zaman atama operatörüne eşlik eder.
Sözdizimi
CREATE OR REPLACE FUNCTION <procedure_name> ( <parameterl IN/OUT <datatype> ) RETURN <datatype> [ IS | AS ] <declaration_part> BEGIN <execution part> EXCEPTION <exception handling part> END;
- CREATE FUNCTION derleyiciye yeni bir fonksiyon oluşturması talimatını verir. 'OR REPLACE' anahtar sözcüğü, derleyiciye mevcut işlevi (varsa) mevcut işlevle değiştirmesi talimatını verir.
- İşlev adı benzersiz olmalıdır.
- RETURN veri tipi belirtilmelidir.
- Prosedür diğer bazı bloklara yerleştirildiğinde 'IS' anahtar kelimesi kullanılacaktır. Prosedür bağımsızsa 'AS' kullanılacaktır. Bu kodlama standardı dışında her ikisi de aynı anlama sahiptir.
Örnek1: Fonksiyon Oluşturma ve Anonim Blok kullanarak çağırma
Bu programda ismi girdi olarak alan ve karşılama mesajını çıktı olarak döndüren bir fonksiyon oluşturacağız. Fonksiyonu çağırmak için anonim blok ve select deyimini kullanacağız.
CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2 IS BEGIN RETURN (‘Welcome ‘|| p_name); END; / DECLARE lv_msg VARCHAR2(250); BEGIN lv_msg := welcome_msg_func (‘Guru99’); dbms_output.put_line(lv_msg); END; SELECT welcome_msg_func(‘Guru99:) FROM DUAL;
Kod Açıklaması:
- Kod satırı 1: Oluşturma Oracle 'welcome_msg_func' adında ve 'IN' tipinde 'p_name' parametreli işlev.
- Kod satırı 2: dönüş tipinin VARCHAR2 olarak bildirilmesi
- Kod satırı 5: Birleştirilmiş 'Hoş Geldiniz' değeri ile parametre değerinin döndürülmesi.
- Kod satırı 8: Yukarıdaki işlevi çağırmak için anonim blok.
- Kod satırı 9: Değişkenin, işlevin dönüş veri türüyle aynı veri türüyle bildirilmesi.
- Kod satırı 11: İşlevin çağrılması ve dönüş değerinin 'lv_msg' değişkenine doldurulması.
- Kod satırı 12: Değişken değerinin yazdırılması. Burada alacağınız çıktı “Welcome Guru99” olacaktır.
- Kod satırı 14: Aynı fonksiyonun SELECT deyimi ile çağrılması. Dönüş değeri doğrudan standart çıkışa yönlendirilir.
Prosedür ve İşlev Arasındaki Benzerlikler
- Her ikisi de diğer PL/SQL bloklarından çağrılabilir.
- Alt programda ortaya çıkan istisna alt programda işlenmiyorsa istisna işleme bölümünde, çağıran bloğa yayılacaktır.
- Her ikisinin de gerektiği kadar parametresi olabilir.
- Her ikisi de PL/SQL'de veritabanı nesneleri olarak ele alınır.
Prosedür Vs. İşlev: Temel Farklılıklar
Prosedür | işlev |
---|---|
Esas olarak belirli bir işlemi yürütmek için kullanılır | Esas olarak bazı hesaplamaları gerçekleştirmek için kullanılır |
SELECT deyiminde çağrı yapılamıyor | Hiçbir DML ifadesi içermeyen bir İşlev, SELECT ifadesinde çağrılabilir |
Değeri döndürmek için OUT parametresini kullanın | Değeri döndürmek için RETURN'ü kullanın |
Değerin döndürülmesi zorunlu değildir | Değerin döndürülmesi zorunludur |
RETURN, kontrolden alt programdan çıkmanızı sağlayacaktır. | RETURN kontrolden alt programdan çıkar ve aynı zamanda değeri döndürür |
Dönüş veri türü oluşturma sırasında belirtilmeyecektir | Dönüş veri türü oluşturma sırasında zorunludur |
PL/SQL'de Yerleşik İşlevler
PL / SQL dizeler ve tarih veri türüyle çalışmak için çeşitli yerleşik işlevler içerir. Burada yaygın olarak kullanılan fonksiyonları ve bunların kullanımını göreceğiz.
Dönüşüm İşlevleri
Bu yerleşik işlevler, bir veri türünü başka bir veri türüne dönüştürmek için kullanılır.
Fonksiyon adı | kullanım | Örnek E-posta |
---|---|---|
TO_CHAR | Diğer veri tipini karakter veri tipine dönüştürür | TO_CHAR(123); |
TO_DATE ( dize, biçim ) | Verilen dizeyi tarihe dönüştürür. Dizenin formatla eşleşmesi gerekir. |
TO_DATE('2015-JAN-15', 'YYYY-PZT-GG'); Çıktı: 1 / 15 / 2015 |
TO_NUMBER (metin, biçim) |
Metni verilen formatın sayı tipine dönüştürür. Informat '9' rakam sayısını belirtir |
İkiliden TO_NUMBER('1234′,'9999') seçeneğini seçin;
Çıktı: 1234 İkiliden TO_NUMBER('1,234.45′,'9,999.99') seçeneğini seçin; Çıktı: 1234 |
Dize İşlevleri
Bunlar karakter veri tipinde kullanılan işlevlerdir.
Fonksiyon adı | kullanım | Örnek E-posta |
---|---|---|
INSTR(metin; dize; başlangıç; oluşum) | Belirli bir metnin belirli bir dizedeki konumunu verir.
|
İkili menüden INSTR('AEROPLANE','E',2,1) seçeneğini seçin
Çıktı: 2 İkili menüden INSTR('AEROPLANE','E',2,2) seçeneğini seçin Çıktı: 9 (2nd E'nin ortaya çıkışı) |
SUBSTR ( metin, başlangıç, uzunluk) | Ana dizenin alt dize değerini verir.
|
ikiliden substr('aeroplane',1,7) öğesini seçin
Çıktı: uçak |
ÜST (metin) | Sağlanan metnin büyük harfini döndürür | İkiliden üst('guru99') seçeneğini seçin;
Çıktı: GURU99 |
ALT (metin) | Sağlanan metnin küçük harfini döndürür | İkiliden daha düşük olanı ('AerOpLane') seçin;
Çıktı: uçak |
INITCAP (metin) | Verilen metni başlangıç harfi büyük olacak şekilde döndürür. | İkiliden ('guru99') seçeneğini seçin
Çıktı: Guru99 İkiliden ('hikayem') seçeneğini seçin Çıktı: Benim hikayem |
UZUNLUK (metin) | Verilen dizenin uzunluğunu döndürür | İkiliden UZUNLUK'u ('guru99') seçin;
Çıktı: 6 |
LPAD (metin, uzunluk, pad_char) | Verilen karakterle verilen uzunluk (toplam dize) için dizeyi sol tarafa doldurur | İkiliden LPAD('guru99', 10, '$') seçeneğini seçin;
Çıktı: $$$$guru99 |
RPAD (metin, uzunluk, pad_char) | Verilen karakterle verilen uzunluk (toplam dize) için dizeyi sağ tarafa doldurur | İkiliden RPAD('guru99′,10,'-') öğesini seçin
Çıktı: guru99—- |
LTRIM (metin) | Metnin başındaki beyaz alanı kırpar | İkiliden LTRIM'i('Guru99') seçin;
Çıktı: Guru99 |
RTRIM (metin) | Metnin sonundaki beyaz alanı kırpar | İkiliden RTRIM('Guru99') seçeneğini seçin;
Çıktı; Guru99 |
Tarih Fonksiyonları
Bunlar tarihlerle işlem yapmak için kullanılan işlevlerdir.
Fonksiyon adı | kullanım | Örnek E-posta |
---|---|---|
ADD_MONTHS (tarih, ay sayısı) | Verilen ayları tarihe ekler | ADD_MONTH('2015-01-01',5);
Çıktı: 05 / 01 / 2015 |
SİSTEM | Sunucunun geçerli tarih ve saatini döndürür | İkiliden SYSDATE'i seçin;
Çıktı: 10/4/2015 2:11:43 |
KKTC | Tarih değişkeninin mümkün olan en düşük değere yuvarlanması | ikiliden sysdate, TRUNC(sysdate) seçeneğini seçin;
Çıktı: 10 4:2015 2 |
YUVARLAK | Tarihi en yakın üst veya alt sınıra yuvarlar | İkiliden sysdate, ROUND(sysdate) seçeneğini seçin
Çıktı: 10 4:2015 2 |
AY_BETWEEN | İki tarih arasındaki ay sayısını döndürür | İkili menüden MONTHS_BETWEEN (sysdate+60, sysdate) öğesini seçin
Çıktı: 2 |
ÖZET
Bu bölümde şunları öğrendik.
- Prosedür nasıl oluşturulur ve onu çağırmanın farklı yolları
- Fonksiyon nasıl oluşturulur ve onu çağırmanın farklı yolları
- Prosedür ve İşlev arasındaki benzerlikler ve farklılıklar
- PL/SQL alt programlarındaki parametreler ve RETURN ortak terminolojileri
- Ortak yerleşik işlevler Oracle PL / SQL