Тъй като предишните няколко урока бяха за PL/SQL подпрограми, като PL/SQL функции и съхранени процедури, става задължително да се говори за техните нотации за извикване. Изучаването на концепциите на PL/SQL подпрограмите няма да се счита за завършено, докато не научим и техните нотации за извикване.
Какво е нотация за извикване за PL/SQL подпрограми?
Извикващата нотация е начин за предоставяне на стойности на параметрите на подпрограма, като PL/SQL функция или съхранена процедура.
Типове нотации за извикване на подпрограми
В Oracle PL/SQL има 3 типа нотации за извикване. Това са:
- Позиционна нотация
- Именна нотация и
- Смесена нотация за повикване
Позиционни нотации за повикване
Позиционната нотация е най-често срещаната нотация за извикване, която можете да видите в почти всеки компютърен език за програмиране. В позиционната нотация трябва да посочим стойността за всеки формален параметър по последователен начин. Това означава, че трябва да предоставите стойностите за формалните параметри в същия ред, в който са били декларирани в процедурата или във функцията.
В позиционната нотация типът на данните и позицията на действителния параметър трябва да съвпадат с формалния параметър.
Препоръчан прочит:Действителни параметри срещу формални параметри
Пример:Позиционна нотация за извикване на PL/SQL подпрограми.
CREATE OR REPLACE PROCEDURE emp_sal (dep_id NUMBER, sal_raise NUMBER) IS BEGIN UPDATE employees SET salary = salary * sal_raise WHERE department_id = dep_id; DBMS_OUTPUT.PUT_LINE ('salary updated successfully'); END; /
Това е същият пример, който направихме в PL/SQL Tutorial 42 за това как да създадем съхранена процедура с параметри, макар и с някои малки промени. Сега, ако използваме нотация за позиционно извикване, тогава трябва да предоставим стойностите и на двата параметъра на горната процедура по същия начин, по който са декларирани.
Извикване на съхранена процедура с помощта на позиционна нотация в Oracle Database
EXECUTE emp_sal(40,2);
В това извикване на проста процедура стойността 40 съответства на формалния параметър dep_id, а стойността 2 съответства на параметъра sal_raise.
Означени за повикване с име
Наименована нотация за извикване ви позволява да предавате стойности на формалните параметри, като използвате техните имена. Това от своя страна ще ви позволи да присвоите стойности само на задължителни или да кажете задължителни параметри.
Тази нотация за извикване е полезна, когато имате подпрограма с параметри, където някои от тези параметри са задължителни, а някои са незадължителни и искате да предадете стойностите само на задължителните.
Оператор на асоцииране
За да присвоим стойности на формалните параметри, използвайки техните имена, използваме оператор за асоцииране. Това е комбинация от знак за равенство (=) и знак за по-голямо от (>). Записваме името на формалния параметър от лявата страна на оператора и стойността, която искате да присвоите, от дясната страна на оператора.
Пример за именована нотация за извикване за извикване на PL/SQL подпрограми
CREATE OR REPLACE FUNCTION add_num (var_1 NUMBER, var_2 NUMBER DEFAULT 0, var_3 NUMBER ) RETURN NUMBER IS BEGIN RETURN var_1 + var_2 + var_3; END; /
Горната функция има 3 параметъра. Сред тези 3 параметъра 2 са задължителни, а 1 е по избор със стойност по подразбиране 0.
Можете да извикате тази функция, като използвате позиционна нотация. Но има ограничение, което трябва да изпълните, а именно, че трябва да предоставите стойности на всички формални параметри в същия ред, в който са декларирани и типът данни на формалните и действителните параметри трябва да съвпада.
Така че, ако искате да пропуснете незадължителния параметър и искате да използвате тяхната стойност по подразбиране или просто сте забравили реда на параметъра, в който са били декларирани! Тогава ще ви бъде малко трудно да извикате горната подпрограма, използвайки позиционна нотация. В такъв сценарий можете да се възползвате от Нотацията за повикване с име. Тази нотация за извикване ще ви осигури желаната гъвкавост при извикването на вашите подпрограми.
Извикване на функция PL/SQL с помощта на нотация за наименувано извикване в базата данни на Oracle
DECLARE var_result NUMBER; BEGIN var_result := add_num(var_3 => 5, var_1 =>2); DBMS_OUTPUT.put_line('Result ->' || var_result); END;
Обясних подробно извикването на функцията PL/SQL във видеоурока по същата тема в моя канал в YouTube.
Смесена нотация за извикване за извикване на PL/SQL подпрограми
Както подсказва името в смесената нотация за извикване, можете да извикате подпрограми, като използвате комбинацията от наименовани, както и позиционни нотации за извикване. Смесената нотация за повикване е много полезна, когато списъкът с параметри е дефиниран с всички задължителни параметри първо и незадължителни параметри след това.
Пример за смесена нотация за извикване за извикване на PL/SQL подпрограми
Ето анонимния блок, в който извикаме същата функция add_num ( ), която кодирахме, когато правим нотация за извикване с име.
DECLARE var_result NUMBER; BEGIN var_result := add_num(var_3 => 5, var_1 =>2); DBMS_OUTPUT.put_line('Result ->' || var_result); END;
Ето как използваме смесена нотация за извикване за извикване на PL/SQL подпрограми.
Опитайте сами
Използвайки знанията от горните концепции, опитайте да решите следния въпрос:
Напишете PL/SQL функция с параметри за размяна на две числа и извикайте тази функция, използвайки смесена нотация за извикване.
Можете да споделите кода си или моментната снимка на кода си с мен в моите социални медии [Twitter // Facebook].
Надявам се, че ви е харесало четенето. Не забравяйте да харесате и споделите този блог. Благодаря и приятен ден.