У овом упутству ћете видети детаљан опис како створити и извршити именоване блокове (процедуре и функције).
Поступци и функције су потпрограми који се могу креирати и сачувати у бази података као објекти базе података. Могу се позвати или упутити и унутар осталих блокова.
Поред овога, покриваћемо главне разлике између ова два потпрограма. Такође ћемо разговарати о Орацле уграђеним функцијама.
У овом водичу за Орацле Сторед Сторед ћете научити-
- Терминологије у ПЛ / СКЛ потпрограмима
- Шта је процедура у ПЛ / СКЛ?
- Шта је функција?
- Сличности између поступка и функције
- Поступак вс. Функција: Кључне разлике
- Уграђене функције у ПЛ / СКЛ
Терминологије у ПЛ / СКЛ потпрограмима
Пре него што научимо о ПЛ / СКЛ потпрограмима, разговараћемо о различитим терминологијама које су део ових потпрограма. Испод су терминологије о којима ћемо разговарати.
Параметар:
Параметар је променљива или резервирано место било ког важећег ПЛ / СКЛ типа података преко којег ПЛ / СКЛ потпрограм размењује вредности са главним кодом. Овај параметар омогућава унос потпрограма и издвајање из тих подпрограма.
- Ове параметре треба дефинисати заједно са потпрограмима у време креирања.
- Ови параметри су укључени у наредбу позивања ових потпрограма ради интеракције вредности са потпрограмима.
- Тип података параметра у потпрограму и позиву морају бити исти.
- Величина типа података не би требало да се помиње у време декларације параметара, јер је величина динамичка за овај тип.
На основу њихове намене параметри су класификовани као
- ИН параметар
- ОУТ Параметар
- ИН ОУТ Параметар
ИН параметар:
- Овај параметар се користи за унос потпрограма.
- То је променљива само за читање унутар потпрограма. Њихове вредности се не могу мењати унутар потпрограма.
- У позивајућој изјави ови параметри могу бити променљива или дословна вредност или израз, на пример, то може бити аритметички израз попут '5 * 8' или 'а / б', где су 'а' и 'б' променљиве .
- Параметри су подразумевано ИН типа.
ОУТ Параметар:
- Овај параметар се користи за добијање резултата из потпрограма.
- То је променљива за читање и писање унутар потпрограма. Њихове вредности се могу мењати унутар потпрограма.
- У позиву изјаве, ови параметри би увек требали бити променљива која садржи вредност из тренутних потпрограма.
ИН ОУТ Параметар:
- Овај параметар се користи и за давање улазних података и за добијање резултата из потпрограма.
- То је променљива за читање и писање унутар потпрограма. Њихове вредности се могу мењати унутар потпрограма.
- У позиву изјаве, ови параметри би увек требали бити променљива која садржи вредност из потпрограма.
Ове параметре треба навести у време креирања потпрограма.
ПОВРАТАК
РЕТУРН је кључна реч која наређује преводиоцу да пребаци контролу са потпрограма на позивни израз. У потпрограму РЕТУРН једноставно значи да контрола треба да изађе из потпрограма. Једном када контролер пронађе кључну реч РЕТУРН у потпрограму, код након тога ће бити прескочен.
Обично ће надређени или главни блок позвати потпрограме, а затим ће се контрола пребацити са тих надређених блокова на позване подпрограме. РЕТУРН у потпрограму вратиће контролу назад у њихов родитељски блок. У случају функција, наредба РЕТУРН такође враћа вредност. Тип података ове вредности се увек помиње у време декларације функције. Тип података може бити било ког важећег ПЛ / СКЛ типа података.
Шта је процедура у ПЛ / СКЛ?
Поступак у ПЛ / СКЛ је потпрограм јединица која се састоји од групе ПЛ / СКЛ изјава које се може назвати по имену. Свака процедура у ПЛ / СКЛ-у има своје јединствено име под којим се може позивати и називати. Ова подпрограмска јединица у Орацле бази података чува се као објекат базе података.
Напомена: Подпрограм није ништа друго до поступак и треба га креирати ручно у складу са захтевом. Једном створени, они ће се чувати као објекти базе података.
Испод су карактеристике јединице потпрограма Процедуре у ПЛ / СКЛ:
- Поступци су самостални блокови програма који се могу похранити у базу података.
- Позивање ових ПЛСКЛ процедура може се извршити позивањем на њихово име ради извршавања ПЛ / СКЛ израза.
- Углавном се користи за извршавање процеса у ПЛ / СКЛ.
- Може имати угнежђене блокове или се може дефинисати и угнеждити унутар осталих блокова или пакета.
- Садржи део декларације (опционално), извршни део, део за руковање изузецима (опционално).
- Вредности се могу проследити у Орацле процедуру или преузети из процедуре кроз параметре.
- Ови параметри би требали бити укључени у изјаву о позиву.
- Процедура у СКЛ-у може имати израз РЕТУРН за враћање контроле у позивни блок, али не може вратити никакве вриједности кроз израз РЕТУРН.
- Поступци се не могу позивати директно из СЕЛЕЦТ израза. Могу се позвати из другог блока или путем ЕКСЕЦ кључне речи.
Синтакса:
CREATE OR REPLACE PROCEDURE( … )[ IS | AS ] BEGIN EXCEPTION END;
- ЦРЕАТЕ ПРОЦЕДУРЕ налаже компајлеру да креира нову процедуру у Орацле-у. Кључна реч „ИЛИ ЗАМЕНИ“ наређује компајлеру да постојећу процедуру (ако постоји) замени тренутном.
- Назив процедуре треба да буде јединствен.
- Кључна реч 'ИС' користиће се када се ускладиштена процедура у Орацле-у угнезди у неке друге блокове. Ако је поступак самостални, тада ће се користити „АС“. Осим овог стандарда кодирања, оба имају исто значење.
Пример1: Креирање процедуре и њено позивање помоћу ЕКСЕЦ-а
У овом примеру ћемо створити Орацле процедуру која узима име као улаз и исписује поруку добродошлице као излаз. Користићемо ЕКСЕЦ наредбу за позивање процедуре.
CREATE OR REPLACE PROCEDURE welcome_msg (p_name IN VARCHAR2)ISBEGINdbms_output.put_line (‘Welcome '|| p_name);END;/EXEC welcome_msg (‘Guru99’);
Објашњење кода:
- Линија кода 1 : Креирање процедуре са именом 'велцоме_мсг' и са једним параметром 'п_наме' типа 'ИН'.
- Линија кода 4 : Штампање поруке добродошлице спајањем имена уноса.
- Процедура је успешно састављена.
- Кодни ред 7 : Позивање процедуре помоћу ЕКСЕЦ наредбе са параметром 'Гуру99'. Поступак се извршава и порука се исписује као „Добродошли гуру99“.
Шта је функција?
Фунцтионс је самостални ПЛ / СКЛ потпрограм. Попут ПЛ / СКЛ процедуре, функције имају јединствено име под којим се могу позивати. Они се чувају као ПЛ / СКЛ објекти базе података. Испод су неке од карактеристика функција.
- Функције су самостални блок који се углавном користи у сврху прорачуна.
- Функција користи РЕТУРН кључну реч за враћање вредности, а тип података је дефинисан у тренутку креирања.
- Функција треба или да врати вредност или да подигне изузетак, тј. Повратак је обавезан у функцијама.
- Функција без ДМЛ израза може се директно позвати у СЕЛЕЦТ упиту, док се функција са ДМЛ операцијом може позвати само из других ПЛ / СКЛ блокова.
- Може имати угнежђене блокове или се може дефинисати и угнеждити унутар осталих блокова или пакета.
- Садржи део декларације (опционално), извршни део, део за руковање изузецима (опционално).
- Вредности се могу пренети у функцију или дохватити из процедуре кроз параметре.
- Ови параметри би требали бити укључени у изјаву о позиву.
- ПЛСКЛ функција такође може да врати вредност преко ОУТ параметара који нису РЕТУРН.
- С обзиром да ће увек враћати вредност, у наредби позивања увек се придружује оператору доделе да попуни променљиве.
Синтакса
CREATE OR REPLACE FUNCTION( )RETURN [ IS | AS ] BEGIN EXCEPTION END;
- ЦРЕАТЕ ФУНЦТИОН налаже компајлеру да креира нову функцију. Кључна реч „ИЛИ ЗАМЕНИ“ наређује компајлеру да замени постојећу функцију (ако постоји) са тренутном.
- Назив функције треба да буде јединствен.
- Треба поменути тип података РЕТУРН.
- Кључна реч 'ИС' користиће се када је процедура угнежђена у неке друге блокове. Ако је поступак самостални, тада ће се користити „АС“. Осим овог стандарда кодирања, оба имају исто значење.
Пример1: Стварање функције и позивање помоћу Анонимног блока
У овом програму ћемо створити функцију која узима име као улаз и враћа поруку добродошлице као излаз. Користићемо анонимни блок и изаберите наредбу за позивање функције.
CREATE OR REPLACE FUNCTION welcome_msgJune ( p_name IN VARCHAR2) RETURN VAR.CHAR2ISBEGINRETURN (‘Welcome ‘|| p_name);END;/DECLARElv_msg VARCHAR2(250);BEGINlv_msg := welcome_msg_func (‘Guru99’);dbms_output.put_line(lv_msg);END;SELECT welcome_msg_func(‘Guru99:) FROM DUAL;
Објашњење кода:
- Линија 1 : Стварање Орацле функције са именом 'велцоме_мсг_фунц' и са једним параметром 'п_наме' типа 'ИН'.
- Линија кода 2 : проглашавање типа повратка ВАРЦХАР2
- Редак кода 5 : Враћање спојене вредности „Добродошли“ и вредности параметра.
- Кодни ред 8 : Анонимни блок за позивање горе наведене функције.
- Редак кода 9 : Декларирање променљиве са типом података истим као и повратни тип података функције.
- Линија кода 11 : Позивање функције и попуњавање повратне вредности у променљиву 'лв_мсг'.
- Редак кода 12 : Штампање вредности променљиве. Резултат који ћете овде добити је "Добродошли Гуру99"
- Редак 14 : Позивање исте функције путем наредбе СЕЛЕЦТ. Повратна вредност је директно усмерена на стандардни излаз.
Сличности између поступка и функције
- Оба се могу позвати из других ПЛ / СКЛ блокова.
- Ако се изузетак подигнут у потпрограму не обрађује у одељку руковања изузецима потпрограма, он ће се проширити на позивни блок.
- Оба могу имати онолико параметара колико је потребно.
- Оба се у ПЛ / СКЛ третирају као објекти базе података.
Поступак вс. Функција: Кључне разлике
Процедура | Функција |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Уграђене функције у ПЛ / СКЛ
ПЛ / СКЛ садржи разне уграђене функције за рад са низовима и типом података датума. Овде ћемо видети најчешће коришћене функције и њихову употребу.
Функције конверзије
Ове уграђене функције користе се за претварање једног типа података у други тип података.
Назив функције | Употреба | Пример |
---|---|---|
ТО_ЦХАР | Претвара други тип података у тип података знака | ТО_ЦХАР (123); |
ТО_ДАТЕ (стринг, формат) | Претвара дати низ у датум. Низ треба да се подудара са форматом. | ДО_ДАТУМ ('2015-ЈАН-15', 'ГГГГ-ПОН-ДД'); Излаз: 15.1.2015 |
ТО_НУМБЕР (текст, формат) | Претвара текст у тип броја датог формата. Информат '9' означава број цифара | Изаберите ТО_НУМБЕР ('1234', '9999') из дуал; Излаз: 1234 Изаберите ТО_НУМБЕР ('1.234,45', '9,999.99') из дуал; Излаз: 1234 |
Стринг функције
То су функције које се користе на типу података знака.
Назив функције | Употреба | Пример |
---|---|---|
ИНСТР (текст, низ, почетак, појављивање) | Даје положај одређеног текста у датом низу.
| Селецт ИНСТР ( 'АИРПЛАНЕ', 'Е', 2,1) фром двојног Излаз : 2 селецт ИНСТР ( 'АИРПЛАНЕ', 'Е', 2,2) фром Дуал Оутпут: 9 (2 нд појава оф Е) |
СУБСТР (текст, почетак, дужина) | Даје вредност подниза главног низа.
| изаберите субстр ('авион', 1,7) из дуалног излаза : аеропла |
ГОРЊИ (текст) | Приказује велико слово наведеног текста | Изаберите горњи ('гуру99') из дуал; Излаз : ГУРУ99 |
ДОЊИ (текст) | Приказује мала слова наведеног текста | Изаберите доњи („авион“) из дуал; Излаз : авион |
ИНИТЦАП (текст) | Даје дати текст са почетним словом великим словом. | Селецт ('гуру99') фром дуал Оутпут : Гуру99 Селецт ('гуру99') фром дуал Оутпут : Ми Стори |
ДУЖИНА (текст) | Враћа дужину датог низа | Изаберите ЛЕНГТХ ('гуру99') из дуал; Излаз : 6 |
ЛПАД (текст, дужина, пад_цхар) | Поставља низ на левој страни за задату дужину (укупни низ) са датим знаком | Изаберите ЛПАД ('гуру99', 10, '$') из дуал; Резултат : $$$$ гуру99 |
РПАД (текст, дужина, пад_цхар) | Поставља низ са десне стране за дату дужину (укупни низ) датим знаком | Изаберите РПАД ('гуру99', 10, '-') из дуалног излаза : гуру99 ---- |
ЛТРИМ (текст) | Изрезује водећи размак из текста | Изаберите ЛТРИМ ('Гуру99') из дуал; Резултат : Гуру99 |
РТРИМ (текст) | Смањује заостали размак из текста | Изаберите РТРИМ ('Гуру99') из дуал; Оутпут ; Гуру99 |
Датум функције
То су функције које се користе за манипулисање датумима.
Назив функције | Употреба | Пример |
---|---|---|
ДОДАЈ_МЕСЕЦЕ (датум, број месеци) | Додаје дате датуме месецу | АДД_МОНТХ ('01.01.2015', 5); Излаз : 01.05.2015 |
СИСДАТЕ | Приказује тренутни датум и време сервера | Изаберите СИСДАТЕ из дуал; Излаз : 4/5/2015 14:11:43 ПМ |
ТРУНЦ | Заокружите променљиву датума на нижу могућу вредност | изаберите сисдате, ТРУНЦ (сисдате) из дуал; Излаз : 4.10.2015. 14:12:39 04.10.2015 |
ОКРУГЛО | Заокружује датум на најближу границу, било већу или мању | Изаберите сисдате, РОУНД (сисдате) из дуал оутпут : 10/4/2015 14:14:34 ПМ 5/5/2015 |
МОНТХС_БЕТВЕЕН | Приказује број месеци између два датума | Изаберите МОНТХС_БЕТВЕЕН (сисдате + 60, сисдате) из дуалног излаза : 2 |
Резиме
У овом поглављу научили смо следеће.
- Како створити процедуру и различите начине њеног позива
- Како створити функцију и различите начине позивања
- Сличности и разлике између поступка и функције
- Параметри и РЕТУРН уобичајене терминологије у ПЛ / СКЛ потпрограмима
- Уобичајене уграђене функције у Орацле ПЛ / СКЛ