Oracle
 sql >> база данни >  >> RDS >> Oracle

Нотация за извикване за PL/SQL подпрограми в базата данни на Oracle

Тъй като предишните няколко урока бяха за PL/SQL подпрограми, като PL/SQL функции и съхранени процедури, става задължително да се говори за техните нотации за извикване. Изучаването на концепциите на PL/SQL подпрограмите няма да се счита за завършено, докато не научим и техните нотации за извикване.

Какво е нотация за извикване за PL/SQL подпрограми?

Извикващата нотация е начин за предоставяне на стойности на параметрите на подпрограма, като PL/SQL функция или съхранена процедура.

Типове нотации за извикване на подпрограми

В Oracle PL/SQL има 3 типа нотации за извикване. Това са:

  1. Позиционна нотация
  2. Именна нотация и
  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].

Надявам се, че ви е харесало четенето. Не забравяйте да харесате и споделите този блог. Благодаря и приятен ден.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:как да използвам UNION и да поръчам по конкретен избор?

  2. Надграждане на Grid Control след ръчно надграждане на DB

  3. 2 функции, които връщат месеца от дата в Oracle

  4. Функция RAWTONHEX() в Oracle

  5. ORA-01461:може да обвърже LONG стойност само за вмъкване в LONG колона - Възниква при запитване