Запомнена процедура срещу функция
Запазените процедури и функции са два вида програмни блокове. И двамата трябва да имат зовни имена. Тези извикващи имена се използват за извикването им в друг програмен блок като процедури, функции и пакети или SQL заявки. И двата типа обекти приемат параметри и изпълняват задачата зад тези обекти. Това е синтаксисът (в ORACLE) за създаване на съхранена процедура, създайте или заменете процедура име на процедура (параметри)
като
начало
изявления;
изключение
exception_handling
край;
И тук е синтаксисът за създаване на функция (в ORACLE), създайте или заменете функция име на функция (параметри)
връщане return_datatype
като
начало
изявления;
върни върната_стойност/променлива;
изключение;
exception_handling;
край;
Запазени процедури
Както бе споменато по-горе, съхранените процедури се наричат блокове за програмиране. Те приемат параметри като потребителски вход и обработват според логиката зад процедурата и дават резултата (или извършват конкретно действие). Тези параметри могат да бъдат тип IN, OUT и INOUT. Декларации на променливи, присвоявания на променливи, оператори за управление, цикли, SQL заявки и други извиквания на функции/процедури/пакети могат да бъдат в тялото на процедурите.
Функции
Функциите също са наименувани програмни блокове, които трябва да върнат стойност чрез оператор RETURN и преди да върне стойност, тялото му също изпълнява някои действия (според дадената логика). Функциите също приемат параметри за изпълнение. Функциите могат да се извикват вътре в заявките. Когато се извика функция в заявка SELECT, тя се прилага към всеки ред от набора от резултати на заявката SELECT. Има няколко категории функции на ORACLE. Те са,
Функции за един ред (връща един резултат за всеки ред от заявката)
Има подкатегории на функции от един ред.
- Числова функция (Напр.: ABS, SIN, COS)
- Функция за знаци (Напр.: CONCAT, INITCAP)
- Функция за дата и час (Напр.: LAST_DAY, NEXT_DAY)
- Функции за преобразуване (Напр.: TO_CHAR, TO_DATE)
- Функция за събиране (Напр.: CARDINALITY, SET)
- Обобщаващи функции (Връща единичен ред на базата на група редове. Пример: AVG, SUM, MAX)
- Аналитични функции
- Референтни функции на обект
- Функции на модела
- Потребителски дефинирани функции
Каква е разликата между функция и съхранена процедура?
• Всички функции трябва да връщат стойност, използвайки израз RETURN. Съхранените процедури не връщат стойности, използвайки израз RETURN. Операторът RETURN вътре в процедура ще върне нейния контрол на извикващата програма. OUT параметрите могат да се използват за връщане на стойности от съхранени процедури.
• Функциите могат да се извикват вътре в заявките, но съхранените процедури не могат да се използват вътре в заявките.
• Типът данни RETURN трябва да бъде включен, за да се създаде функция, но в съхранената процедура DDL не е така.