Tranzaksiyalarni boshqarish
Funktsiya bu bir xil amallar ketma ketligini bajarish jarayonini bitta qolipga solib, qiymatni hisoblaydigan usuldir.
Funksiya sintaksisini va Oracle / PLSQL-da funktsiyalarni qanday yaratishni va o'chirishni misollar yordamida o'rganamiz.
Funktsiyani yaratish.
Boshqa dasturlash tillari singari, biz Oracleda o'z funktsiyalarimizni yaratishimiz mumkin.
Sintaksisi quyidagicha:
CREATE [OR REPLACE] FUNCTION funksiya_nomi
[ (parametr [, parametr, …]) ]
RETURN ma'lumot_turi IS | AS
[local e’lonlar]
BEGIN
bajariladigan amallar
[EXCEPTION
istisno holatlar]
END [funksiya_nomi];
Protsedura yoki funktsiyani yaratishda biz e'lon qilinishi mumkin bo'lgan parametrlarning uch turini aniqlashimiz mumkin:
IN - parametr protsedura yoki funktsiyaga murojaat qilishi mumkin. Protsedura yoki funktsiya bo'yicha parametr qiymatini o'zgartirib bo'lmaydi.
OUT - parametr protsedura yoki funktsiyani anglatmaydi, lekin protsedura yoki funktsiya orqali parametrning qiymati o'zgartirilishi mumkin.
IN OUT - parametr protsedura yoki funktsiyaga murojaat qilishi mumkin va parametr qiymatlari protsedura yoki funktsiya tomonidan o'zgartirilishi mumkin.
Misol
Oracleda funktsiyani yaratishga misol ko'ramiz.
Oracle PL/SQL
|
CREATE OR REPLACE Function FindCourse ( name_in IN varchar2 )
RETURN number IS cnumber number;
cursor c1 is SELECT course_number
FROM courses_tbl
WHERE course_name = name_in;
BEGIN
open c1;
fetch c1 into cnumber;
if c1%notfound then
cnumber := 9999;
end if;
close c1;
RETURN cnumber;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END;
|
Ushbu funksiya FindCourse deb nomlanadi. Unda name_in bitta parametr mavjud va butun turdagi qiymatni qaytaradi. Agar funktsiya "course_name" ga asoslangan holda topilsa, funktsiya "course_number" ni qaytaradi. Aks holda, 99999 ni qaytaradi.
SQL so'rovida yangi funktsiyamizga quyidagicha murojaat qilishimiz mumkin:
SELECT course_name, FindCourse(course_name) AS course_id
FROM courses
WHERE subject = ‘Mathematics’;
Do'stlaringiz bilan baham: |