Saklı
Yordamlar (Stored Procedures)
1-
Yordam bir kez oluşturulduktan sonra defalarca çağrılabilir. SQL Developer’da
saklı yordam üzerinde değişiklik yapabilirsiniz. Bu işleme modülerlik adı
verilir.
2-
Saklı yordam ilk kez çalıştırıldığında yazım denetimi yapılır ve hız için en
iyi seviyeye getirilir. Saklı yordam derlendikten sonra sonraki kullanımlar
için hafızada saklanır. Yani her kullanım için yazım denetimi ve hız için en
iyi seviyeye getirme ayarı yapılmaz.
3-
Ağ trafiğini azaltır. Bir döngü içerisinde yüzlerce satırın her birinde baştan
sona işlemler yapılacaksa ağın trafik yoğunluğu artar. Bu durumda döngü
işlemleri saklı yordam içerisinde yapılarak ağ trafiği azaltılır.
4-
Saklı Yordamı çalıştırabilmek için kullanıcının izne ihtiyacı vardır. İzne
sahip değilse doğrudan saklı yordamı çalıştıramazlar.
5-
Saklı yordamlar 2100 tane parametreye sahip olabilir.
6-
Bir saklı yordamın boyutu 128 MB’ı geçmemelidir.
7-
Yordam parametreleri null değeri kabul ederler. Parametreye karşılık gelecek
bir değer yoksa parametre null ifade içerir. Bu parametre kullanılarak saklı
yordam içerisinde tablo için alan oluşturulacaksa hata döndürür. Bir tablonun
alan adı null olamaz. Bu durumdan kurtulmak için oluşturulan parametrelere
varsayılan değer verilmelidir.
CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ] IS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [procedure_name];
Saklı Yordam Örneği
CREATE OR REPLACE PROCEDURE RAISE_AMOUNT ( P_ID IN NUMBER , P_RAISE_AMT IN NUMBER DEFAULT 0 ) AS BEGIN UPDATE EMPLOYEES SET SALARY=SALARY*(1 + P_RAISE_AMT) WHERE EMPLOYEE_ID=P_ID; END RAISE_AMOUNT;
Saklı Yordam Çalıştırma
BEGIN RAISE_AMOUNT(105,.05); END; SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID=105; --Prosedür silme DROP PROCEDURE RAISE_AMOUNT;
SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID=105;
Saklı Yordam Silme
DROP PROCEDURE RAISE_AMOUNT;
KULLANICI
TANIMLI FONKSİYONLAR
1- Skaler değer döndüren fonksiyonlar
2- Tablo döndüren fonksiyonlar
SCALER
DEĞER DÖNDÜREN KULLANICI TANIMLI FONKSİYONLAR:
3 farklı şekilde bağlantı:
1. İşletim sisteminin komut istemcisi
2. Uygulama (SQL Developer vb.)
3. Web tarayıcı
Fonksiyon Yapısı
Fonksiyon Yapısı
CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatype IS | AS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [function_name];
Fonksiyon Örneği
CREATE OR REPLACE FUNCTION BANK_KARTNO(_income IN VARCHAR2) RETURN BOOLEAN IS --###-##-#### Banka kartı formatı hata EXCEPTION; ayrac CHAR(1); part1 NUMBER(3,0); part2 NUMBER(2,0); part3 NUMBER(4,0); BEGIN IF LENGTH(_income) <> 11 THEN --Boyutu 11'e eşit değilse hata ver. RAISE hata; END IF; part1 := TO_NUMBER(SUBSTR(_income,1,3),'999'); --3 karakterlik 1. parçası ayrac := SUBSTR(_income,4,1); IF ayrac <> '-' THEN -- Ayrac - eşit değilse hata ver RAISE hata; END IF; part2 := TO_NUMBER(SUBSTR(_income,5,2),'99'); --2 karakterlik 2. parçası ayrac := SUBSTR(_income,7,1); IF ayrac <> '-' THEN -- Yine ayracı kontrol et. RAISE hata; END IF; part3 := TO_NUMBER(SUBSTR(_income,8,4),'9999'); --4 karakterlik 3. parçası RETURN TRUE; EXCEPTION WHEN hata THEN RETURN FALSE; WHEN OTHERS THEN RETURN FALSE; END BANK_KARTNO;
Fonksiyon Silme
DROP FUNCTION BANK_KARTNO;
Bir sonraki yazımda görüşmek üzere...