Функције сачуване у МиСКЛ

Преглед садржаја

Функције ускладиштене у МиСКЛ -у користе се за инкапсулирање прорачуна или операција са записима и пољима података који су преузети из СКЛ упита и уобичајени су задаци или пословна правила.

Велика предност је то што се могу поново користити, а програмски језик у којем се функције развијају је СКЛ изјаве и условне или понављајуће се структуре.

За разлику од ускладиштене процедуре, можете користити ускладиштену функцију у СКЛ изразима где користите израз који вам омогућава креирање условних правила.

Погледајмо пример стварања базе података школе:

 ЦРЕАТЕ ДАТАБАСЕ `факултет`
Затим креирамо табелу са оценама ученичких тестова
 - - Структура табеле за таблице `екамнотес` - ЦРЕАТЕ ТАБЛЕ` екамнотес` (` ид` ИНТ (11) НОТ НУЛЛ АУТО_ИНЦРЕМЕНТ, `идалумно` ИНТ (11) НОТ НУЛЛ,` материал ид` ИНТ (11) НОТ НУЛЛ, `ноте1 `ДЕЦИМАЛ (10,2) НОТ НУЛЛ,` ноте2` ДЕЦИМАЛ (10,2) НОТ НУЛЛ, `ноте3` ДЕЦИМАЛ (10,2) НОТ НУЛЛ,` авераге` ДЕЦИМАЛ (10,2) НОТ НУЛЛ, `стате` ВАРЦХАР (100) НУЛЛ ДЕФАУЛТ НУЛЛ, ПРИМАРИ КЕИ (`ид`)) ЦОЛЛАТЕ = 'латин1_сведисх_ци' ЕНГИНЕ = ИнноДБ - Индекси табеле` нотасеамс` - АЛТЕР ТАБЛЕ `нотасетест` ДОДАЈ ПРИМАРНИ КЉУЧ (` ид`); Затим додајемо неке податке у табеле екамнотес - Думп података за табелу `нотасенсам` ИНСЕРТ ИНТО` нотацијски испит` (` ид`, `идалумно`,` субјецтид`, `ноте1`,` ноте2`, `ноте3`,` просек `,` стање`) ВРЕДНОСТИ (1, 1000, 1, '8.00', '9.25', '7.00', '0.00', ''), (2, 1001, 1, '6.33', '8.50', '8.00', '0.00', ''), (3, 1002, 1, '10 .00 ',' 7.50 ',' 8.33 ',' 0.00 ',' '), (4, 1003, 2,' 4.50 ',' 2,00 ',' 5,50 ',' 0,00 ',' '), (5, 1004, 1,' 3,50 ',' 2,00 ',' 4,00 ',' 0,00 ',' ');

Затим ћемо креирати ускладиштену функцију која ће проћи кроз целу табелу оцена и израчунати просечну оцену за сваког ученика по предмету и ажурирати табелу тако да означи да ли је положио или није успео.

Функцију можемо креирати из Пхпмиадмина или било ког уређивача који нам омогућава писање СКЛ кода;

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

Функције ускладиштене у МиСКЛ -у обично се користе за прорачуне и операције, док се ускладиштене процедуре обично користе за извршавање пословних правила.

Функције обично не утичу на структуру базе података, али да бисмо извршили неки прорачун, упоредили и вратили резултат или изменили податке у табели у бази података, такође можемо створити покретач за контролу или ревизију промена које функција врши.

Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен
wave wave wave wave wave