Ю тся следую щие вопросы : ■ Структура блоков я зы к а o racle p L /s q L
Хранимые функции, процедуры и пакеты
Download 0.9 Mb. Pdf ko'rish
|
Майкл Мак-Локлин - Oracle DB 11g. Программирование на языке PL-SQL - 2014 better 51-73
43
Хранимые функции, процедуры и пакеты Х рани м ы е п рограм м н ы е ед и н и ц ы P L /S Q L об ы ч н о явл яю тся ф ун кц ия ми, процедурам и, п акетам и и три ггерам и . К ро м е того, вы м ож ете со хра н ять о б ъ ек тн ы е ти п ы , но это р ассм атри вается в Главе 14. O racle п одд ерж и вает ун икальн ы й сп и сок им ен хран и м ы х объектов для таблиц, п ред ставл ен и й , п ослед овател ьн о стей , хран и м ы х програм м и типов. Э то т сп и сок и звестен как п р о стр ан ств о имен. В нем находятся ф ункции, п роцедуры , п акеты и объекты . В отдельном п р о стр ан ств е им ен х р ан ятся три ггеры . Х рани м ы е ф ункции, п роцедуры и п акеты п о зво л яю т скры ть детали п рограм м н ого кода в п рограм м н ы х единицах. К ром е того, он и п о зво л я ю т п р о и зв о д и ть упаковку п рограм м н ого кода для п р ед о твр ащ ен и я их от неж елательн о го п р о см о тр а н а уровне сервера. Хранимые функции Х рани м ы е ф ун кц ии явл яю тся удобны ми структурами, потому ч то вы мо- ж ете вы зы вать их напрямую и з п ред лож ен и й SQL и ли из програм м P L / SQL. Все х ран и м ы е ф ун кц ии долж ны возвращ ать зн ач ен и е. К р о м е того, вы м ож ете и сп ользовать их в качестве п равого о п еран д а потому, что он и возвращ аю т результат. Ф ункции оп ред ел яю тся в локальн ом блоке об ъяв лен и й (local d ec la ratio n block) и ли в базе данны х. В от п р о то ти п х р ан и м ой функции: □ FUNCTION имя_функции [(параметр1 [IN] [OUT][NOCOPY] тип_данных_зд1 | Ti/m_flaHHbix_plsql [, параметр2 [IN] [OUT][NOCOPY] Tnn_flaHHbix_sql | т nn_flaHHbix_plsql [, параметр(п+1) [IN] [0UT][N0C0PY] Tnn_flaHHbix_sql | тип_данных_ plsql)]]] RETURN [TMn_flaHHbix_sql | тип_данных_р1эд1] [AUTHID [DEFINER | CURRENTJJSER]] [DETERMINISTIC | PARALLEL_ENABLED] [PIPELINED] [RESULT_CACHE [RELIES ON имя_таблицы ]] IS операторы_объявлений BEGIN выполняемые_команды RETURN переменная; [EXCEPTION] команды_обработки_исключений END [имя функции]; / В P L /S Q L ф ункции могут п р и м ен яться в качестве п равы х операндов. К ром е того, вы м ож ете вы зы вать их напрямую и з п р ед ло ж ен и й SQL, п р и условии, ч то о н и возвращ аю т дан ны е ти п о в, допустим ы х в SQL. П роцедуры не могут бы ть п равы м и операндам и. И вы не м ож ете вы зы вать их и з п ред лож ен и й SQL. 44 Глава 2 Вы м ож ете зап раш и вать ф ункцию , к о то р а я возвр ащ ает ти п данны х SQL, и з псевдотаблиц ы DUAL, используя следую щ ий п р ото ти п : □ SELECT некоторая_функция [(фактический_параметр1, фактический_пара- метр2)] FROMdual; Вы более не о гр ан и ч ен ы в SQ L возм ож н остью п еред авать ф ак ти ч ес ки е п ар ам етр ы в п ор яд ке их расп о лож ен и я. Э то означает, что вы м ож е те и сп ользовать в SQL н отац и ю по и м ен и , как и в P L /S Q L . В Главе 6 рас см атри вается, как р аб отаю т н о тац и я по им ен и , н о тац и я по п о зи ц и и и см еш анная н отац и я. В следующем п р и м ер е п р и в о д и тся п р о то т и п с н о тац и ей по и м ен и для вы зо ва ф ун кц ии P L /S Q L и з псевдотаблиц ы DUAL: П SELECT некоторая_функция [(формальный_параметр=> фактический_параметр)] FROMdual; В ы зовы с и сп ол ьзован и ем н о тац и и по и м ен и р аб отаю т э ф ф ек ти в н ее, когда для остальн ы х п ар ам етр о в существуют зн ач ен и я по умолчанию . Н е и м еет см ы сла указы вать то льк о часть п ар ам етр ов, если это п р и в ед ет к ош ибке п р и вы зове. Ф орм альн ы е п ар ам етр ы являю тся .необязательны ми. В ы зовы с и сп ол ьзован и ем н о тац и и по им енам раб о таю т лучш е с фун кц и ям и и процедурам и, у к о то р ы х и м ею тся н ео б язател ьн ы е п арам етры . К ром е того, вы м ож ете и сп ол ьзовать о п е р а то р CALL для п ер ед ач и воз вращ аем ого ф ун кц ией зн ач ен и я п ер ем ен н о й связи. В от п р о то ти п для о п е р а т о р а CALL: □ CALL некоторая_функциях [(фактический_параметр1, фактический_пара- метр2)] INTO некоторая_переменная_связи_сеанса; Вот п р и м ер ф ункции, к о то р а я осущ ествляет кон катен ац ию двух стр о к в одну: □ — Найдено в join_strings.sql на сайте издателя CREATE OR REPLACE FUNCTION join_strings (stringl VARCHAR2 , string2 VARCHAR2) RETURN VARCHAR2 IS BEGIN RETURN stringl||’ ‘||string2||’.’; END; / Т еп ерь вы м ож ете вы звать эту ф ункцию в SQL: П SELECT join_strings(‘Hello’,’World’) FROMdual; А н алогично, вы м ож ете оп р ед ел и ть п ерем енную связи уровня сеанса, а п отом и сп ол ьзовать о п ер ато р CALL, ч то бы п р и сво и ть это зн ач ен и е пе рем ен н о й связи уровня сеанса: □ VARIABLE session_var VARCHAR2(30) CALL join_strings(‘Hello’,’World’) INTO :session_var; |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling