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

Урок за PL/SQL:Всичко, което трябва да знаете за PL/SQL

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

  • Какво е PL/SQL?
    • Функции
    • PL/SQL срещу SQL
  • Блокови структури в PL/SQL
  • PL/SQL променливи
  • Функция в PL/SQL
  • PL/SQL процедура
  • Вложен блок
  • Изявление IF
  • Изявление на CASE
  • Изявление на цикъл
    • Изявление за цикъл докато
    • Изявление за цикъл
  • Изключителна обработка

Какво е PL/SQL?

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

Функции

  • PL/SQL предоставя функционалността на процедурен език, като вземане на решения, повторение и др.

  • С помощта на една команда PL/SQL може да изпълни редица заявки.

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

  • PL/SQL също има блок за обработка на изключения, който обработва изключенията в PL/SQL.

  • Възможна е и обширна проверка на грешки с помощта на PL/SQL

  • Приложенията, написани на PL/SQL, са преносими към друг хардуер и операционни системи, при условие че oracle трябва да работи.

PL/SQL срещу SQL

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

Блокови структури в PL/SQL

PL/SQL обикновено организира кода в блокове. Кодовият блок без име е известен като анонимен блок. Известен е като анонимен блок, тъй като не се записва в базата данни на Oracle. Нека да разгледаме анонимен блок в PL/SQL.

[DECLARE] декларационни оператори;[BEGIN] оператори за изпълнение; [EXCEPTION] изрази за изключение;END;/

Разглеждайки диаграмата, показана по-горе, можем да видим, че блоковата структура е разделена на четири части, т.е. декларация, начало, изключение и край. Нека се опитаме да разберем как работи блоковата структура в PL/SQL. От всички тези секции, разделът за изпълнение е задължителен, а останалите са по избор.

  • ДЕКЛАРИРАНЕ ключовата дума се използва за секцията за декларация се използва за деклариране на типове данни и структури като променливи, функции и т.н.

  • ЗАПОЧНЕТЕ ключовата дума се използва за секцията за изпълнение. Той е задължителен и съдържа всички оператори, които трябва да бъдат изпълнени. Този блок е мястото, където се дефинира бизнес логиката, можем да използваме както процедурни, така и SQL изрази в този блок.

  • ИЗКЛЮЧЕНИЕТО ключова дума се използва за секцията за изключение. Той съдържа всички изрази за изключение.

  • КРАЙ ключовата дума маркира края на блока, а обратната наклонена черта ‘/’ казва на инструмента, който използвате (Oracle Database Tool), за да изпълни PL/SQL блока.

Ето един прост пример, за да покажем как можем да използваме PL/SQL кода.

BEGIN NULL;END;/

Сега, когато знаем как работи блоковата структура в PL/SQL, нека разберем различните аспекти на PL/SQL като деклариране, именуване и присвояване на стойности на променливите.

P>

PL/SQL променливи

Променливата в PL/SQL е основно име, което варира или временно място за съхранение, което поддържа определен тип данни. Нека да разгледаме как можем да използваме променливите в PL/SQL програма.

Правила за именуване на променливи

PL/SQL следва следните правила за именуване на променливи.

  • Променливата не може да бъде повече от 31 знака

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

  • След първия знак трябва да има специален знак ($,_) или произволно число.

Конвенции за именуване

Използвайте следните конвенции за именуване, изброени по-долу, за да използвате променливите.

Префикс Тип данни
v_ VARCHAR2
n_ NUMBER
t_ ТАБЛИЦА
r_ РЕД
d_ ДАТА
b_ БУЛЕВ

Декларация

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

Декларацията включва името на променливата, последвано от типа данни и разделено с точка и запетая. Следва пример, който показва как можете да декларирате променлива в PL/SQL.

DECLARE v_name VARCHAR(25); n_age NUMBER(3);BEGIN NULL;END;

Можете също да добавите дължината на типа данни, както направихме в примера по-горе.

Котви

Котвата основно се отнася до използването на ключовата дума %TYPE, която да декларира променлива с типа данни, свързан с типа данни на колона на конкретна колона в таблица.

Разгледайте един пример, за да разберете това. Да предположим, че имаме таблица СЛУЖИТЕЛИ, можем да използваме котвите по следния начин.

DECLARE v_name EMPLOYEE.NAME%TYPE; n_age EMPLOYEE.AGE%TYPE;BEGIN NULL;END;/

Задание

Присвояването на променлива е доста лесно, можем да използваме оператора за присвояване, за да присвоим стойности на променлива. Следващият пример показва как можем да присвоим стойности на променлива.

DECLARE v_name VARCHAR(20); n_course VARCHAR(10);BEGIN v_name ="edureka"; v_course ="sql";END;/

Инициализация

Можем да инициализираме стойност за променливата и в секцията за декларация. Следващият пример показва как можем да инициализираме стойности към променлива.

DECLAREv_name VARCHAR(20) ="edureka";n_course VARCHAR(10) ="sql";BEGIN NULL;END;/

Сега, когато знаем как можем да работим с променливите, нека се опитаме да разберем как ще използваме функциите в PL/SQL.

Функция в PL/SQL

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

CREATE [OR REPLACE] FUNCTION име_на_функция [( параметър_1 [IN] [OUT] тип_данни, параметър_2 [IN] [OUT] тип_данни, parameter_N [IN] [OUT] тип_данни] RETURN return_data_type IS BEGIN изрази връщане return_data_type; EXCEPTION END; /

На първо място, трябва да посочите име на функция след ключовата дума. Името на функцията трябва да започва с глагол. Функцията може да няма нито един, един или повече параметри, които указваме в параметри. Трябва изрично да посочим типа данни на всеки параметър и след това идва режимът, който може да има едно от следните.

  • IN – Параметърът IN е параметър само за четене.

  • OUT – Това е параметър само за запис

  • IN OUT – Параметърът IN OUT е параметър за четене и запис.

Ето един прост пример, който показва как използваме функциите в PL/SQL.

СЪЗДАДЕТЕ ИЛИ ЗАМЕНЕТЕ ФУНКЦИЯ try_parse(iv_number В VARCHAR2) ВРЪЩАНЕ НА НОМЕР ISBEGIN ВРЪЩАНЕ към_номер(iv_number); ИЗКЛЮЧЕНИЕ, КОГАТО други ТОГАВА ВРЪЩАТ NULL;END;

Извикване на функция

Нека се опитаме да извикаме функцията, която сме направили в анонимен блок в следващия пример.

ЗАДАДЕТЕ ИЗХОД НА СЪРВЪР НА РАЗМЕР 1000000; ДЕКЛАРИРАЙТЕ n_x номер; n_y номер; n_z номер;BEGIN n_x :=try_parse('256'); n_y :=try_parse('29.72'); n_z :=try_parse('pqrs'); DBMS_OUTPUT.PUT_LINE(n_x); DBMS_OUTPUT.PUT_LINE(n_y); DBMS_OUTPUT.PUT_LINE(n_z);END;/

Можем да извикаме функцията и в оператор SELECT. Сега, когато знаем как можем да използваме функции в PL/SQL, нека се опитаме да разберем как работим с процедурите в PL/SQL.

PL/SQL процедура

Процедурата е основно блок, който изпълнява конкретна задача. С помощта на процедура можем да обвием или капсулираме сложна бизнес логика и да ги използваме повторно както в слоя на приложението, така и в слоя на базата данни.

Нека да разгледаме прост пример, за да разберем как работи процедурата в PL/SQL

СЪЗДАДЕТЕ ИЛИ ЗАМЕНЕТЕ ПРОЦЕДУРА adjust_salary( in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE, in_percent IN NUMBER) ISBEGIN -- актуализиране на заплатата на служителя АКТУАЛИЗИРАНЕ на служителите SET заплата =заплата + заплата * in_percent / превар. в Emploeed;ENDyee_id;ENDyee WHER_id;ENDyee WHERE_ID; 

В горния пример имаме два параметъра, процедурата коригира заплатата с даден процент и ключовата дума UPDATE актуализира стойността в информацията за заплатата.

Заглавка на процедурата

Разделът преди ключовата дума IS се нарича заглавка на процедурата. Следват няколко указания, с които трябва да се запознаете, докато работите с процедури.

  • схема – Това е незадължителното име на схемата, към която принадлежи процедурата.

  • име – Името на процедурата, която трябва да започва с глагол.

  • параметри – Това е незадължителният списък с параметри.

  • AUTHID – Той определя дали процедурата ще се изпълни с привилегията на текущия потребител или първоначалния собственик на процедурата.

Тяло на процедурата

Всичко, което идва след ключовата дума IS, се нарича тяло на процедурата. Имаме изявленията за декларация, изключение и изпълнение в органа на процедурата. За разлика от функцията, ключовата дума RETURN в процедура се използва за спиране на изпълнението и връщане на контрола към повикващия.

Извикване на процедура

Нека видим как можем да извикаме процедура в PL/SQL.

 EXEC име_на_процедура(параметр1,параметр2…парамN);

Можем да извикаме процедурите без параметри само с помощта на ключовата дума EXEC и името на процедурата. Сега, когато знаем как можем да работим с процедури, нека се опитаме да разберем как се използват вложените блокове в PL/SQL.

Вложен блок

Вложеният блок не е нищо друго освен комбинация от един или повече PL/SQL блока за по-добър контрол върху изпълнението и изключителна обработка на програмата.

Ето един прост пример за вложен блок.

ЗАДАДЕТЕ ИЗХОД НА СЪРВЕР НА РАЗМЕР 1000000;ДЕКЛАРИРАНЕ n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE :=&emp_id1;BEGIN ДЕКЛАРИРАНЕ на n_emp_id employee.employee_id%TYPE :=&emp_id2; v_name служители.първо_име%TYPE; BEGIN SELECT first_name INTO v_name FROM служители WHERE employee_id =n_emp_id; DBMS_OUTPUT.PUT_LINE('Първо име на служител ' || n_emp_id || ' е ' || v_name); ИЗКЛЮЧЕНИЕ WHEN no_data_found THEN DBMS_OUTPUT.PUT_LINE('Служител' || n_emp_id || 'не е намерен'); КРАЙ;КРАЙ;/

Външният PL/SQL блок в горния пример е известен като родителски блок или ограждащ блок, вътрешният блок, от друга страна, е известен като дъщерния блок или затворен блок.

Не е добра идея да използвате променливите с еднакви имена и в двата блока, защото по време на изпълнението променливата на дъщерния блок ще замени променливата на родителския блок. Това се случва, защото PL/SQL дава първи приоритет на променливата в собствения си блок.

Етикет за блок

Можем да преодолеем този проблем с етикета на блока, който ни помага да правим препратки към променливи вътре в блоковете с помощта на етикет.

Ето един прост пример, за да покажем как можем да използваме етикет на блок.

<>ДЕКЛАРИРАНЕ...BEGIN...END;

Използването на етикет на блок помага да се подобри четимостта на кода, да се постигне по-добър контрол и да се правят препратки към блоковете. Сега, когато знаем как можем да работим с вложени блокове, нека се опитаме да разберем как работи IF STATEMENT в PL/SQL.

Изявление IF

PL/SQL има три ИЗКАЗА IF

  • АКО-ТОГАВА – Това е най-простият IF STATEMENT, ако условието е вярно, операторите ще се изпълнят, ако условието е false, то не прави нищо.

  • АКО-ТОГА-ИНАЧЕ – В това се добавя клаузата ELSE за алтернативна последователност от изрази.

  • АКО-ТОГА-ELSEIF – Позволява ни да изпълним множество тестови условия в последователност.

Синтаксис IF-THEN

Условие IF THEN последователност_от_изявления;END IF;

Синтаксис IF-THEN-ELSE

Условие IF THEN последователност_от_if_изявления;ELSE последователност_от_други_изявления;END IF;

Синтаксис IF-THEN-ELSEIF

IF условие1 THEN последователност_от_изявления1ELSIF условие2 THEN последователност_от_изявления2ELSE последователност_на_изявления3END IF;

Сега, когато приключихме с IF STATEMENT, нека разгледаме оператора CASE в PL/SQL.

Изявление на CASE

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

[<<име_на_етикет>>]CASE [ВЯРНО | селектор] КОГА израз1 THEN последователност_от_изявления1; WHEN израз2 THEN последователност_от_изявления2; ... WHEN изразN THEN последователност_от_изявленияN; [ELSE последователност_от_изявленияN+1;]END CASE [име_на_етикет];

В горния синтаксис след ключовата дума CASE идва селекторът. PL/SQL ще оцени селектора само веднъж, за да определи кой оператор трябва да бъде изпълнен.

Следвана от селектора е ключовата дума WHEN. Ако изразът удовлетворява селектора, тогава се изпълнява съответният оператор след ключовата дума THEN.

Сега, когато знаем как можем да използваме оператор CASE, нека се опитаме да разберем как ще използваме операторите на цикъла в PL/SQL.

Изявление на цикъл

Изразът за цикъл в PL/SQL е итерационен оператор, който ви позволява да изпълнявате последователност от оператори няколко пъти. Ето един прост пример за показване на синтаксиса на оператор за цикъл в PL/SQL.

LOOP последователност_от_изявления;END LOOP;

Трябва да има поне един изпълним оператор между ключовите думи LOOP и END LOOP.

Цикъл с оператор EXIT

Изказванията EXIT и EXIT, когато ви позволяват да излезете от цикъла. Инструкцията EXIT WHEN прекратява цикъла условно, докато EXIT прекратява изпълнението безусловно.

ПРИМЪКА ... ИЗХОД КОГАТО условие; КРАЙ LOOP;

Етикет с цикъл

Етикет на цикъл се използва за квалифициране на името на променливата на брояча на цикъла, когато се използва във вложен цикъл. Следва синтаксисът на етикета на цикъла.

<

Сега, когато знаем как можем да използваме операторите на цикъла, нека да разгледаме операторите на цикъла while за по-добро разбиране.

Изявление на цикъла докато

Можем да използваме оператора на цикъла WHILE, когато броят на изпълненията не е дефиниран, докато изпълнението не започне. Следният синтаксис се използва за оператор за цикъл WHILE в PL/SQL.

WHILE условиеLOOP последователност_от_изявления;END LOOP;

Условието в синтаксиса е булева стойност или израз, който се оценява като TRUE, FALSE или NULL. Ако условието е TRUE, операторите ще бъдат изпълнени, ако е FALSE, изпълнението спира и контролата преминава към следващия изпълним оператор.

Сега, когато знаем как можем да използваме оператор за цикъл WHILE, нека да разгледаме оператора на цикъла FOR.

Изявление за цикъл за

Организация за цикъл FOR в PL/SQL ни позволява да изпълним поредица от оператори за определен брой пъти. Следва синтаксисът за използване на оператор за цикъл FOR в PL/SQL

FOR loop_counter IN [REVERSE] low_bound .. high_boundLOOP последователност_на_изявления;END LOOP;

PL/SQL създава автоматично локална променлива loop_counter с тип данни INTEGER за цикъла, така че да не се налага да го декларирате изрично. Долната граница..високата граница е диапазонът, през който цикълът се повтаря. Освен това трябва да имате поне един изпълним оператор между ключовите думи LOOP и END LOOP.

Сега, когато знаем как можем да използваме операторите на цикъла в PL/SQL, нека да разгледаме изключителната обработка в PL/SQL.

Изключително управление

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

  • Системно изключение – Повдига се от времето за изпълнение на PL/SQL, когато открие грешка.

  • Изключение, дефинирано от програмиста – Тези изключения се дефинират от програмиста в конкретно приложение.

Дефиниране на изключение

Изключение в PL/SQL трябва да бъде декларирано, преди да може да бъде повдигнато. Можем да дефинираме изключението с помощта на ключовата дума EXCEPTION, както направихме в примера по-долу.

EXCEPTION_NAME ИЗКЛЮЧЕНИЕ;

За да предизвикаме изключение, използваме ключовата дума RAISE.

ПОВДИГАНЕ НА EXCEPTION_NAME;

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

Ако искате да получите структурирано обучение за MySQL, разгледайте нашето обучение за сертифициране на MySQL DBA който идва с обучение на живо от инструктор и реален опит с проекти. Това обучение ще ви помогне да разберете MySQL в дълбочина и ще ви помогне да постигнете майсторство по темата.

Имате въпрос към нас? Моля, споменете го в секцията за коментари на ”PL/SQL урок ” и ще се свържа с вас.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Нивото на изолация на МОМЕНТАЛНА СНИМКА

  2. Създаване на модел на данни за споделено пътуване

  3. Нормализиране и производителност на пакетния режим

  4. Разбийте големите операции за изтриване на парчета

  5. Въведение в статистиката за чакане