Похрањена процедура Орацле ПЛ / СКЛ & амп; Функције са примерима

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

Anonim

У овом упутству ћете видети детаљан опис како створити и извршити именоване блокове (процедуре и функције).

Поступци и функције су потпрограми који се могу креирати и сачувати у бази података као објекти базе података. Могу се позвати или упутити и унутар осталих блокова.

Поред овога, покриваћемо главне разлике између ова два потпрограма. Такође ћемо разговарати о Орацле уграђеним функцијама.

У овом водичу за Орацле Сторед Сторед ћете научити-

  • Терминологије у ПЛ / СКЛ потпрограмима
  • Шта је процедура у ПЛ / СКЛ?
  • Шта је функција?
  • Сличности између поступка и функције
  • Поступак вс. Функција: Кључне разлике
  • Уграђене функције у ПЛ / СКЛ

Терминологије у ПЛ / СКЛ потпрограмима

Пре него што научимо о ПЛ / СКЛ потпрограмима, разговараћемо о различитим терминологијама које су део ових потпрограма. Испод су терминологије о којима ћемо разговарати.

Параметар:

Параметар је променљива или резервирано место било ког важећег ПЛ / СКЛ типа података преко којег ПЛ / СКЛ потпрограм размењује вредности са главним кодом. Овај параметар омогућава унос потпрограма и издвајање из тих подпрограма.

  • Ове параметре треба дефинисати заједно са потпрограмима у време креирања.
  • Ови параметри су укључени у наредбу позивања ових потпрограма ради интеракције вредности са потпрограмима.
  • Тип података параметра у потпрограму и позиву морају бити исти.
  • Величина типа података не би требало да се помиње у време декларације параметара, јер је величина динамичка за овај тип.

На основу њихове намене параметри су класификовани као

  1. ИН параметар
  2. ОУТ Параметар
  3. ИН ОУТ Параметар

ИН параметар:

  • Овај параметар се користи за унос потпрограма.
  • То је променљива само за читање унутар потпрограма. Њихове вредности се не могу мењати унутар потпрограма.
  • У позивајућој изјави ови параметри могу бити променљива или дословна вредност или израз, на пример, то може бити аритметички израз попут '5 * 8' или 'а / б', где су 'а' и 'б' променљиве .
  • Параметри су подразумевано ИН типа.

ОУТ Параметар:

  • Овај параметар се користи за добијање резултата из потпрограма.
  • То је променљива за читање и писање унутар потпрограма. Њихове вредности се могу мењати унутар потпрограма.
  • У позиву изјаве, ови параметри би увек требали бити променљива која садржи вредност из тренутних потпрограма.

ИН ОУТ Параметар:

  • Овај параметар се користи и за давање улазних података и за добијање резултата из потпрограма.
  • То је променљива за читање и писање унутар потпрограма. Њихове вредности се могу мењати унутар потпрограма.
  • У позиву изјаве, ови параметри би увек требали бити променљива која садржи вредност из потпрограма.

Ове параметре треба навести у време креирања потпрограма.

ПОВРАТАК

РЕТУРН је кључна реч која наређује преводиоцу да пребаци контролу са потпрограма на позивни израз. У потпрограму РЕТУРН једноставно значи да контрола треба да изађе из потпрограма. Једном када контролер пронађе кључну реч РЕТУРН у потпрограму, код након тога ће бити прескочен.

Обично ће надређени или главни блок позвати потпрограме, а затим ће се контрола пребацити са тих надређених блокова на позване подпрограме. РЕТУРН у потпрограму вратиће контролу назад у њихов родитељски блок. У случају функција, наредба РЕТУРН такође враћа вредност. Тип података ове вредности се увек помиње у време декларације функције. Тип података може бити било ког важећег ПЛ / СКЛ типа података.

Шта је процедура у ПЛ / СКЛ?

Поступак у ПЛ / СКЛ је потпрограм јединица која се састоји од групе ПЛ / СКЛ изјава које се може назвати по имену. Свака процедура у ПЛ / СКЛ-у има своје јединствено име под којим се може позивати и називати. Ова подпрограмска јединица у Орацле бази података чува се као објекат базе података.

Напомена: Подпрограм није ништа друго до поступак и треба га креирати ручно у складу са захтевом. Једном створени, они ће се чувати као објекти базе података.

Испод су карактеристике јединице потпрограма Процедуре у ПЛ / СКЛ:

  • Поступци су самостални блокови програма који се могу похранити у базу података.
  • Позивање ових ПЛСКЛ процедура може се извршити позивањем на њихово име ради извршавања ПЛ / СКЛ израза.
  • Углавном се користи за извршавање процеса у ПЛ / СКЛ.
  • Може имати угнежђене блокове или се може дефинисати и угнеждити унутар осталих блокова или пакета.
  • Садржи део декларације (опционално), извршни део, део за руковање изузецима (опционално).
  • Вредности се могу проследити у Орацле процедуру или преузети из процедуре кроз параметре.
  • Ови параметри би требали бити укључени у изјаву о позиву.
  • Процедура у СКЛ-у може имати израз РЕТУРН за враћање контроле у ​​позивни блок, али не може вратити никакве вриједности кроз израз РЕТУРН.
  • Поступци се не могу позивати директно из СЕЛЕЦТ израза. Могу се позвати из другог блока или путем ЕКСЕЦ кључне речи.

Синтакса:

CREATE OR REPLACE PROCEDURE
(
… )[ IS | AS ]BEGINEXCEPTIONEND;
  • ЦРЕАТЕ ПРОЦЕДУРЕ налаже компајлеру да креира нову процедуру у Орацле-у. Кључна реч „ИЛИ ЗАМЕНИ“ наређује компајлеру да постојећу процедуру (ако постоји) замени тренутном.
  • Назив процедуре треба да буде јединствен.
  • Кључна реч 'ИС' користиће се када се ускладиштена процедура у Орацле-у угнезди у неке друге блокове. Ако је поступак самостални, тада ће се користити „АС“. Осим овог стандарда кодирања, оба имају исто значење.

Пример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 ]BEGINEXCEPTIONEND; 
  • ЦРЕАТЕ ФУНЦТИОН налаже компајлеру да креира нову функцију. Кључна реч „ИЛИ ЗАМЕНИ“ наређује компајлеру да замени постојећу функцију (ако постоји) са тренутном.
  • Назив функције треба да буде јединствен.
  • Треба поменути тип података РЕТУРН.
  • Кључна реч 'ИС' користиће се када је процедура угнежђена у неке друге блокове. Ако је поступак самостални, тада ће се користити „АС“. Осим овог стандарда кодирања, оба имају исто значење.

Пример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

Резиме

У овом поглављу научили смо следеће.

  • Како створити процедуру и различите начине њеног позива
  • Како створити функцију и различите начине позивања
  • Сличности и разлике између поступка и функције
  • Параметри и РЕТУРН уобичајене терминологије у ПЛ / СКЛ потпрограмима
  • Уобичајене уграђене функције у Орацле ПЛ / СКЛ