PL/SQL — це блочно структурована мова, яка дає змогу розробникам поєднувати потужність SQL із процедурними операторами. Усі оператори блоку передаються до механізму Oracle одночасно, що збільшує швидкість обробки та зменшує трафік.
Основи PL/SQL
- • PL/SQL означає розширення процедурної мови до мови структурованих запитів (SQL).
- PL/SQL — це комбінація SQL разом із процедурними функціями мов програмування.
- Oracle використовує механізм PL/SQL для обробки операторів PL/SQL.
- PL/SQL містить такі елементи процедурної мови, як умови та цикли. Він дозволяє декларувати константи та змінні, процедури та функції, типи та змінні цих типів та тригери.
Недоліки SQL:
- SQL не надає програмістам техніки перевірки умов, циклу та розгалуження.
- Інструкції SQL передаються системі Oracle по одній, що збільшує трафік і зменшує швидкість.
- SQL не має можливості перевірки помилок під час маніпулювання даними.
Особливості PL/SQL:
- PL/SQL — це в основному процедурна мова, яка забезпечує функціональність прийняття рішень, ітерації та багато інших функцій процедурних мов програмування.
- PL/SQL може виконувати кілька запитів в одному блоці за допомогою однієї команди.
- Можна створити одиницю PL/SQL, наприклад процедури, функції, пакети, тригери та типи, які зберігаються в базі даних для повторного використання програмами.
- PL/SQL надає функцію обробки виняткової ситуації, яка виникає в блоці PL/SQL, відомого як блок обробки виняткової ситуації.
- Програми, написані на PL/SQL, переносяться на апаратне забезпечення комп’ютера або операційну систему, де працює Oracle.
- PL/SQL Пропонує розширену перевірку помилок.
Відмінності між SQL і PL/SQL:
| SQL | PL/SQL |
| SQL — це єдиний запит, який використовується для виконання операцій DML і DDL. | PL/SQL — це блок кодів, який використовувався для написання повних програмних блоків/процедур/функцій тощо. |
| Це декларативність, яка визначає, що потрібно робити, а не те, як це робити. | PL/SQL — це процедура, яка визначає, як потрібно робити речі. |
| Виконати як один оператор. | Виконати цілим блоком. |
| В основному використовується для маніпулювання даними. | В основному використовується для створення програми. |
| Не може містити код PL/SQL. | Це розширення SQL, тому в ньому може міститися SQL. |
Структура блоку PL/SQL:
PL/SQL розширює SQL, додаючи конструкції, знайдені в процедурних мовах, у результаті чого структурна мова є потужнішою, ніж SQL. Основною одиницею в PL/SQL є блок. Усі програми PL/SQL складаються з блоків, які можуть бути вкладені один в одного.
Як правило, кожен блок виконує логічну дію в програмі. Блок має таку структуру:
список методів java
DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
- Розділ оголошення починається з ЗАЯВИТИ Ключове слово, у якому можна оголошувати змінні, константи, записи як курсори, яке тимчасово зберігає дані. В основному він складається з визначення ідентифікаторів PL/SQL. Ця частина коду необов'язкова.
- Виконання розділу починається з ПОЧАТИ і закінчується на КІНЕЦЬ Ключове слово. Це обов’язковий розділ, і тут написана логіка програми для виконання будь-яких завдань, таких як цикли та умовні оператори. Він підтримує все DML команди, DDL команди та вбудовані функції SQL*PLUS.
- Розділ винятків починається з ВИНЯТОК Ключове слово. Цей розділ необов’язковий і містить оператори, які виконуються, коли виникає помилка під час виконання. Будь-які винятки можна обробляти в цьому розділі.
Ідентифікатори PL/SQL
Існує кілька ідентифікаторів PL/SQL, таких як змінні, константи, процедури, курсори, тригери тощо.
- Змінні : Як і в деяких інших мовах програмування, змінні в PL/SQL мають бути оголошені перед їх використанням. Вони також повинні мати дійсне ім’я та тип даних. Синтаксис для оголошення змінних:
variable_name datatype [NOT NULL := value ];>
- Приклад, щоб показати, як оголошувати змінні в PL/SQL:
C
java подвійний до рядка
SQL>SET SERVEROUTPUT ON;> SQL>ЗАЯВИТИ>> >var1 INTEGER;> >var2 REAL;> >var3 varchar2(20) ;> BEGIN> >null;> END;> /> |
>
>
- Вихід:
PL/SQL procedure successfully completed.>
- Пояснення:
- УВІМКНУТИ SERVEROUTPUT : використовується для відображення буфера, який використовується dbms_output.
- var1 INTEGER : Це оголошення змінної з іменем var1 який має цілий тип. Є багато інших типів даних, які можна використовувати, як-от float, int, real, smallint, long тощо. Він також підтримує змінні, що використовуються в SQL, а також NUMBER(prec, scale), varchar, varchar2 тощо.
- Процедура PL/SQL успішно завершена.: Він відображається, коли код скомпільовано та виконано успішно.
- Коса риска (/) після END;: Слеш (/) вказує SQL*Plus виконати блок.
- Оператор присвоювання (:=) : використовується для призначення значення змінній.
- Відображення результату : Виходи відображаються за допомогою DBMS_OUTPUT, який є вбудованим пакетом, який дозволяє користувачеві відображати вихідні дані, інформацію про налагодження та надсилати повідомлення з блоків PL/SQL, підпрограм, пакетів і тригерів. Давайте подивимося приклад, щоб побачити, як відобразити повідомлення за допомогою PL/SQL:
C
SQL>SET SERVEROUTPUT ON;> SQL>ЗАЯВИТИ>> >var varchar2(40) :=>'I love GeeksForGeeks'> ;> >BEGIN> >dbms_output.put_line(var);> >END;> >/> |
>
>
- Вихід:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
- Пояснення:
- dbms_output.put_line : Ця команда використовується для спрямування виводу PL/SQL на екран.
- Використання коментарів : Як і в багатьох інших мовах програмування, у PL/SQL також можна розміщувати коментарі в коді, які не впливають на код. Є два синтаксиси для створення коментарів у PL/SQL:
- Однорядковий коментар: Щоб створити однорядковий коментар, символ– –використовується.
- Багаторядковий коментар: Щоб створити коментарі, які охоплюють кілька рядків, символ/*і*/використовується.
- Отримання вхідних даних від користувача : Як і в інших мовах програмування, у PL/SQL також ми можемо приймати вхідні дані від користувача та зберігати їх у змінній. Давайте подивимося приклад, щоб показати, як приймати дані від користувачів у PL/SQL:
C
bash для циклу
SQL>SET SERVEROUTPUT ON;> SQL>ЗАЯВИТИ>> >-- taking input>for> variable a> >a number := &a;> > >-- taking input>for> variable b> >b varchar2(30) := &b;> >BEGIN> >null;> >END;> >/> |
>
>
- Вихід:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
- (***) Давайте подивимося приклад на PL/SQL, щоб продемонструвати всі вищезазначені концепції в одному блоці коду.
C
--PL/SQL code to print sum of two numbers taken from the user.> SQL>SET SERVEROUTPUT ON;> SQL>ЗАЯВИТИ>> > >-- taking input>for> variable a> >a integer := &a ;> > >-- taking input>for> variable b> >b integer := &b ;> >c integer ;> >BEGIN> >c := a + b ;> >dbms_output.put_line(>'Sum of '>||a||>' and '>||b||>' is = '>||c);> >END;> >/> |
>
>
Підручник .net
Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>
Середовище виконання PL/SQL:
Механізм PL/SQL міститься в механізмі Oracle. Механізм Oracle може обробляти не лише один оператор SQL, а й блок багатьох операторів. Виклик механізму Oracle потрібно зробити лише один раз, щоб виконати будь-яку кількість операторів SQL, якщо ці оператори SQL об’єднані в блок PL/SQL.