Oracle PL / SQL Depolanan Prosedür & Örneklerle İşlevler

Bu eğitimde, adlandırılmış blokların (prosedürler ve işlevler) nasıl oluşturulacağı ve çalıştırılacağına ilişkin ayrıntılı açıklamayı göreceksiniz.

Prosedürler ve Fonksiyonlar, veritabanı nesneleri olarak veritabanında oluşturulabilen ve 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, Oracle yerleşik işlevlerini de tartışacağız.

Bu Oracle Stored Procedure eğitiminde şunları öğreneceksiniz:

  • PL / SQL Alt Programlarındaki Terminolojiler
  • PL / SQL'de Prosedür nedir?
  • İşlev nedir?
  • Prosedür ve İşlev Arasındaki Benzerlikler
  • Prosedür Vs. İşlev: Anahtar Farklılıklar
  • PL / SQL'de Yerleşik İş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, PL / SQL alt programının değerleri ana kodla değiştirdiği herhangi bir geçerli PL / SQL veri türünün değişkeni veya yer tutucusudur. Bu parametre, alt programlara girdi verilmesine ve bu alt programlardan çıkarılmasına izin verir.

  • Bu parametreler, oluşturma sırasında alt programlarla birlikte tanımlanmalıdır.
  • Bu parametreler, değerleri alt programlarla etkileşime sokmak için bu alt programların çağıran ifadesine dahil edilir.
  • Alt programdaki parametrenin veri türü ve çağıran ifade aynı olmalıdır.
  • Veri türünün boyutu, bu tür için boyut dinamik olduğundan, parametre bildirimi sırasında belirtilmemelidir.

Amacına göre parametreleri şöyle sınıflandırılır:

  1. IN Parametresi
  2. OUT Parametresi
  3. IN OUT 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çinde değiştirilemez.
  • Çağıran ifadede, bu parametreler bir değişken veya bir değişmez değer veya bir ifade olabilir; örneğin, 'a' ve 'b'nin değişken olduğu' 5 * 8 'veya' a / b 'gibi aritmetik ifade olabilir. .
  • Varsayılan olarak, parametreler IN tipindedir.

OUT Parametresi:

  • Bu parametre alt programlardan çıktı almak için kullanılır.
  • Alt programların içindeki bir okuma-yazma değişkenidir. Değerleri alt programların içinde değiştirilebilir.
  • Çağıran ifadede, bu parametreler her zaman mevcut alt programlardan değeri tutan bir değişken olmalıdır.

IN OUT Parametresi:

  • Bu parametre hem girdi vermek hem de alt programlardan çıktı almak için kullanılır.
  • Alt programların içindeki bir okuma-yazma değişkenidir. Değerleri alt programların içinde değiştirilebilir.
  • Çağıran ifadede, bu parametreler her zaman alt programlardan değeri tutan bir değişken olmalıdır.

Bu parametre tipi, alt programların oluşturulması sırasında belirtilmelidir.

DÖNÜŞ

RETURN, derleyiciye kontrolü alt programdan çağıran deyime geçirmesini söyleyen anahtar sözcüktür. Alt programda RETURN, kontrolün alt programdan çıkması gerektiği anlamına gelir. Denetleyici alt programda RETURN anahtar sözcüğünü bulduğunda, bundan sonraki kod atlanacaktır.

Normalde, üst veya ana blok alt programları çağırır ve ardından kontrol bu ana bloktan çağrılan alt programlara geçer. Alt programdaki RETURN, kontrolü ana bloğuna geri döndürecektir. İşlevler söz konusu olduğunda, RETURN deyimi de değeri döndürür. Bu değerin veri türü her zaman işlev 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?

Bir Prosedürü PL / SQL adıyla çağrılabilir PL / SQL tabloların bir grup oluşur, bir alt program birimidir. PL / SQL'deki her prosedürün, başvurulabileceği ve çağrılabileceği kendi benzersiz adı vardır. Oracle veritabanındaki bu alt program birimi, 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, veritabanında saklanabilen bir programın bağımsız bloklarıdır.
  • Bu PLSQL prosedürlerine çağrı, PL / SQL deyimlerini yürütmek için adlarına başvurarak yapılabilir.
  • Esas olarak PL / SQL'de bir işlemi yürütmek için kullanılır.
  • İç içe bloklara sahip olabilir veya tanımlanabilir ve diğer blokların veya paketlerin içine yerleştirilebilir.
  • 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 Oracle prosedürüne geçirilebilir veya prosedürden parametreler aracılığıyla getirilebilir.
  • Bu parametreler çağıran ifadeye dahil edilmelidir.
  • SQL'deki bir Prosedür, denetimi çağıran bloğa döndürmek için bir RETURN deyimine sahip olabilir, ancak RETURN deyimi aracılığıyla herhangi bir değer döndüremez.
  • Prosedürler doğrudan SELECT deyimlerinden çağrılamaz. Başka bir bloktan veya EXEC anahtar sözcüğü aracılığıyla çağrılabilirler.

Sözdizimi:

CREATE OR REPLACE PROCEDURE
(
… )[ IS | AS ]BEGINEXCEPTIONEND;
  • CREATE PROCEDURE, derleyiciye Oracle'da yeni prosedür yaratması talimatını verir. Anahtar kelime 'VEYA DEĞİŞTİR', derlemeye mevcut prosedürü (varsa) mevcut prosedürle değiştirmesini söyler.
  • Prosedür adı benzersiz olmalıdır.
  • Oracle'daki saklı yordam başka blokların içine yerleştirildiğinde anahtar sözcük 'IS' kullanılacaktır. Prosedür bağımsız ise 'AS' kullanılacaktır. Bu kodlama standardı dışında her ikisi de aynı anlama sahiptir.

Örnek 1: Prosedür Oluşturma ve EXEC kullanarak onu çağırma

Bu örnekte, adı girdi olarak alan ve karşılama mesajını çıktı olarak yazdıran bir Oracle prosedürü oluşturacağız. Prosedürü çağırmak için EXEC komutunu kullanacağız.

CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)ISBEGINdbms_output.put_line (‘Welcome '|| p_name);END;/EXEC welcome_msg (‘Guru99’);

Kod Açıklaması:

  • Kod satırı 1 : Prosedürün 'welcome_msg' adıyla ve 'IN' türünden bir 'p_name' parametresiyle oluşturulması.
  • Kod satırı 4 : Giriş adını birleştirerek karşılama mesajını yazdırın.
  • Prosedür başarıyla derlendi.
  • Kod satırı 7 : 'Guru99' parametresiyle EXEC komutunu kullanarak prosedürü çağırma. Prosedür gerçekleştirilir ve mesaj "Welcome Guru99" olarak yazdırılır.

İşlev nedir?

Fonksiyonlar, bağımsız bir PL / SQL alt programıdır. PL / SQL prosedürü gibi, fonksiyonların başvurulabilecek benzersiz bir adı vardır. Bunlar PL / SQL veritabanı nesneleri olarak saklanır. Aşağıda işlevlerin 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ı yükseltmelidir, yani işlevlerde dönüş zorunludur.
  • DML deyimleri olmayan işlev doğrudan SELECT sorgusunda çağrılabilirken, DML işlemli işlev yalnızca diğer PL / SQL bloklarından çağrılabilir.
  • İç içe bloklara sahip olabilir veya tanımlanabilir ve diğer blokların veya paketlerin içine yerleştirilebilir.
  • 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 işleve geçirilebilir veya prosedürden parametreler aracılığıyla alınabilir.
  • Bu parametreler çağıran ifadeye dahil edilmelidir.
  • Bir PLSQL işlevi, değeri RETURN kullanmak dışında OUT parametreleriyle de döndürebilir.
  • Her zaman değeri döndüreceğinden, deyimi çağırırken değişkenleri doldurmak için her zaman atama operatörüyle birlikte gelir.

Sözdizimi

CREATE OR REPLACE FUNCTION
(
)RETURN [ IS | AS ]BEGINEXCEPTIONEND; 
  • CREATE FUNCTION, derleyiciye yeni bir işlev oluşturma talimatı verir. Anahtar sözcük 'VEYA DEĞİŞTİR' derleyiciye mevcut işlevi (varsa) mevcut işlevle değiştirmesini söyler.
  • İşlev adı benzersiz olmalıdır.
  • RETURN veri türü belirtilmelidir.
  • Prosedür diğer blokların içine yerleştirildiğinde anahtar kelime 'IS' kullanılacaktır. Prosedür bağımsız ise '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, adı 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 deyimi kullanacağız.

CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2ISBEGINRETURN (‘Welcome ‘|| p_name);END;/DECLARElv_msg VARCHAR2(250);BEGINlv_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 : Oracle işlevini 'welcome_msg_func' adıyla ve 'IN' türünden bir 'p_name' parametresiyle oluşturma.
  • Kod satırı 2 : dönüş türünü VARCHAR2 olarak bildirme
  • Kod satırı 5 : Birleştirilmiş 'Hoş Geldiniz' değerini ve parametre değerini döndürür.
  • Kod satırı 8 : Yukarıdaki işlevi çağırmak için anonim blok.
  • Kod satırı 9 : Değişkeni veri türüyle bildirmek, işlevin dönüş veri türü ile aynıdır.
  • Kod satırı 11 : Fonksiyonu çağırmak ve dönüş değerini 'lv_msg' değişkenine doldurmak
  • Kod satırı 12 : Değişken değerin yazdırılması. Burada alacağınız çıktı "Welcome Guru99" olacaktır.
  • Kod satırı 14 : Aynı işlevi SELECT deyimi aracılığıyla çağırma. Dönüş değeri doğrudan standart çıktıya 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 program istisna işleme bölümünde ele alınmazsa, çağıran bloğa yayılır.
  • Her ikisinin de gerektiği kadar çok parametresi olabilir.
  • Her ikisi de PL / SQL'de veritabanı nesneleri olarak değerlendirilir.

Prosedür Vs. İşlev: Anahtar Farklılıklar

Prosedür Fonksiyon
  • Esas olarak belirli bir süreci yürütmek için kullanılır
  • Esas olarak bazı hesaplamalar yapmak için kullanılır
  • SELECT deyiminde çağrılamaz
  • DML deyimi içermeyen bir İşlev, SELECT deyiminde ç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ğeri döndürmek zorunlu değildir
  • Değeri döndürmek zorunludur
  • RETURN, alt programdan kontrolden çıkacaktır.
  • RETURN, alt programdan kontrolden çıkar ve ayrıca değeri döndürür
  • Dönüş veri türü oluşturma sırasında belirtilmeyecek
  • Dönüş veri türü oluşturma sırasında zorunludur

PL / SQL'de Yerleşik İşlevler

PL / SQL, dizeler ve tarih veri türleriyle çalışmak için çeşitli yerleşik işlevler içerir. Burada yaygın olarak kullanılan fonksiyonları ve kullanımlarını göreceğiz.

Dönüştürme İş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 Misal
TO_CHAR Diğer veri türünü karakter veri türüne dönüştürür TO_CHAR (123);
TO_DATE (dize, biçim) Verilen dizeyi tarihe dönüştürür. Dize, formatla eşleşmelidir. TO_DATE ('2015-OCAN-15', 'YYYY-PAZ-GG'); Çıktı: 1/15/2015
TO_NUMBER (metin, biçim) Metni verilen biçimin sayı türüne dönüştürür. Informat '9' basamak sayısını gösterir İkili arasından TO_NUMBER ('1234', '9999') seçin; Çıktı: 1234 İkili arasından TO_NUMBER ('1,234,45', '9,999,99') seçin; Çıktı: 1234

Dize İşlevleri

Bunlar, karakter veri türünde kullanılan işlevlerdir.

Fonksiyon adı Kullanım Misal
INSTR (metin, dize, başlangıç, oluşum) Verilen dizedeki belirli bir metnin konumunu verir.
  • metin - Ana dize
  • dize - aranması gereken metin
  • başlangıç ​​- aramanın başlangıç ​​konumu (isteğe bağlı)
  • uyum - aranan dizenin tekrarı (isteğe bağlı)
Seçin INSTR çift gelen ( 'UÇAK', 'e', 2,1) Çıkış : 2 seçin INSTR çift Output ( 'UÇAK', 'e', 2,2): 9 (2 nci E oluşumu)
SUBSTR (metin, başlangıç, uzunluk) Ana dizenin alt dize değerini verir.
  • metin - ana dize
  • başlangıç ​​- başlangıç ​​pozisyonu
  • uzunluk - alt dizeli uzunluk
Çift gelen substr ( 'uçak', 1,7) seçmek Çıktı : aeropla
UPPER (metin) Sağlanan metnin büyük harfini döndürür Dual'den üst ('guru99') seçin; Çıktı : GURU99
DÜŞÜK (metin) Sağlanan metnin küçük harfini döndürür Dual'den daha düşük ('uçak') seçin; Çıktı : uçak
INITCAP (metin) Verilen metni, başlangıç ​​harfi büyük olacak şekilde döndürür. Dual Output : Guru99'dan ('guru99') seçin Dual Output : My Story'den ('my story') seçin
UZUNLUK (metin) Verilen dizenin uzunluğunu verir Dualden UZUNLUK ('guru99') seçin; Çıktı : 6
LPAD (metin, uzunluk, pad_char) Verilen uzunluk (toplam dizi) için sol taraftaki dizeyi verilen karakterle doldurur Dual'den LPAD'yi ('guru99', 10, '$') seçin; Çıktı : $$$$ guru99
RPAD (metin, uzunluk, pad_char) Verilen uzunluk (toplam dizi) için sağ taraftaki dizeyi verilen karakterle doldurur ( 'Guru99', 10 '-') Rpad seçin ikili dan Çıktı : guru99 ----
LTRIM (metin) Metinden baştaki beyaz boşluğu kırpar İkili arasından LTRIM ('Guru99') öğesini seçin; Çıktı : Guru99
RTRIM (metin) Metinden sonraki beyaz boşluğu kırpar İkili arasından RTRIM ('Guru99') öğesini seçin; Çıktı ; Guru99

Tarih İşlevleri

Bunlar, tarihlerle işlem yapmak için kullanılan işlevlerdir.

Fonksiyon adı Kullanım Misal
ADD_MONTHS (tarih, ay sayısı) Verilen ayları tarihe ekler ADD_MONTH ('2015-01-01', 5); Çıktı : 05/01/2015
SYSDATE Sunucunun geçerli tarihini ve saatini verir Dualden SYSDATE öğesini seçin; Çıkış : 10/4/2015 2:11:43 PM
TRUNC Tarih değişkeninin mümkün olan en düşük değere yuvarlanması ikiliden sysdate, TRUNC (sysdate) seçin; Çıkış : 04.10.2015 2:12:39 10/4/2015
YUVARLAK Tarihi, daha yüksek veya daha düşük en yakın sınıra yuvarlar Seç sysdate, çift gelen ROUND (sysdate) Çıktı : 2015/10/04 02:14:34 PM 2015/10/05
MONTHS_BETWEEN İki tarih arasındaki ayların sayısını verir İkili dan MONTHS_BETWEEN seçiniz (sysdate + 60, sysdate) Çıktı : 2

Özet

Bu bölümde aşağıdakileri öğrendik.

  • Prosedür nasıl oluşturulur ve onu çağırmanın farklı yolları
  • İşlev nasıl oluşturulur ve onu adlandırmanın farklı yolları
  • Prosedür ve İşlev arasındaki benzerlikler ve farklılıklar
  • PL / SQL alt programlarında parametreler ve RETURN ortak terminolojileri
  • Oracle PL / SQL'de yaygın olarak kullanılan yerleşik işlevler

Ilginç makaleler...