Функције су врло сличне Похрањене процедуре (СП), разлика лежи у неким детаљима, а главна је у томе што они враћају само једну вредност, када СП може да врати више од једне, додатно нам не треба променљива за чување резултујуће вредности, па је много лакше користити унутар СЕЛЕЦТ .
Креирање функцијеЦиљ функције је изолирати логику иза одређених елемената како би их било лакше користити, на овај начин можемо документирати базу података и њен рад те бити у могућности поједноставити радње апликације које би могле комуницирати с базом података. За креирање функције користићемо следеће елементе:
- Тхе Куери Бок, где можемо написати функцију.
- Промена граничника.
- Механизам уређивања и манипулације функције.
Хајде да видимо како да дефинишемо функцију кроз пример:
ЦРЕАТЕ ФУНЦТИОН гет_цоунтри_наме (парам_цоунтри_цоде ЦХАР (2)) ПОВРАТАК ВАРЦХАР (50) ЧИТА СКЛ ПОДАЦИ ПОЧИЊУ ДЕЦЛАРЕ вар_цоунтри_наме ВАРЦХАР (50) Задано 'није пронађено'; СЕЛЕЦТ десцриптион ФРОМ цоунтри ВХЕРЕ цоде = парам_цоунтри_цоде ИНТО вар_цоунтри_наме; ПОВРАТАК вар_цоунтри_наме; КРАЈ //Као што видимо, синтакса је врло слична оној у СП, само што овде не дефинишемо вредности ИН И ОУТ ако не да дефинишемо параметре које уносе и декларишемо једну вредност која ће бити ПОВРАТАК.
Када пређемо на одељак Рутине На страници са структуром у бази података видећемо да се то одражава на следећи начин:
Након што смо креирали нашу функцију, да видимо како можемо да је тестирамо, ова функција коју користимо као тест шта ради, консултује се са табелом земаља и враћа назив земље када тражимо код, у случају не налазећи га, враћа нам се није пронађен:
СЕЛЕЦТ ЦОНЦАТ ('ца->', гет_цоунтри_наме ('ца'), ', зз->', гет_цоунтри_наме ('зз')) као тест;Једноставно радимо селекцију помоћу ЦОНЦАТ -а како бисмо резултате спојили у низ и добићемо следеће:
ца-> Канада, зз-> није пронађеноКао што видимо, много је лакше од конструисања упита које ће свака земља посебно консултовати.
ОкидачиТхе Окидачи разликују се од функција и Похрањене процедуреНе мора их корисник позивати, оне ће се догодити када се радња изврши на табели са којом су повезане, што нас доводи до друге разлике функција, а то је да су опште; тхе Окидачи ако су повезани са одређеном табелом.
Хајде да видимо како да креирате Окидач:
ЦРЕАТЕ ТРИГГЕР афтер_боок_инсерт ПОСЛЕ УМЕТАЊА НА КЊИГИ ЗА СВАКИ РЕД ПОЧНИТЕ АЖУРИРАЊЕ СЕТ СЕТ тотал_паге_цоунт = тотал_паге_цоунт + НЕВ.паге_цоунт ВХЕРЕ ид = НЕВ.аутхор_ид; КРАЈ //Као што видимо, такође морамо да дефинишемо нови граничник // унутар оквира за упит како бисмо могли да укључимо сва упутства Окидач, у случају примера, повезујемо га у Након уметања то јест, након уметања и извршавања дефинисане радње, ово помаже бази података да аутономно управља радњама које се дешавају.
Када се Окидач Када одемо на страницу са структуром табеле, видећемо је доступну: