PL / SQL, введение
#SQL #СУБДPL / SQL — это блочно-структурированный язык, который позволяет разработчикам объединять возможности SQL с процедурными инструкциями. Все операторы блока сразу передаются в движок Oracle, что увеличивает скорость обработки и уменьшает трафик.
Недостатки 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:

Структура блока PL / SQL:
PL / SQL расширяет SQL, добавляя конструкции, найденные в процедурных языках, в результате чего структурный язык является более мощным, чем SQL. Базовая единица в PL / SQL — это блок. Все программы PL / SQL состоят из блоков, которые могут быть вложены друг в друга.

Как правило, каждый блок выполняет логическое действие в программе. Блок имеет следующую структуру:
DECLARE
declaration statements;
BEGIN
executable statements
EXCEPTIONS
exception handling statements
END;
- Раздел Declare начинается с ключевого слова DECLARE, в котором можно объявить переменные, константы, записи как курсоры, которые временно хранят данные. Он в основном состоит из определения идентификаторов PL / SQL. Эта часть кода не является обязательной.
- Раздел выполнения начинается с BEGIN и заканчивается ключевым словом END. Это обязательный раздел, и здесь логика программы написана для выполнения любых задач, таких как циклы и условные операторы. Он также поддерживает все команды DML, команды DDL и встроенные функции SQL * PLUS.
- Раздел исключений начинается с ключевого слова EXCEPTION. Этот раздел является необязательным и содержит операторы, которые выполняются при возникновении ошибки времени выполнения. Любые исключения могут быть обработаны в этом разделе.
Идентификаторы PL / SQL
Существует несколько идентификаторов PL / SQL, таких как переменные, константы, процедуры, курсоры, триггеры и т. Д.
Переменные :
Как и в некоторых других языках программирования, переменные в PL / SQL должны быть объявлены до его использования. Они также должны иметь правильное имя и тип данных.
Синтаксис для объявления переменных:
variable_name datatype [NOT NULL := value ];
Пример, показывающий, как объявлять переменные в PL / SQL:
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
var1 INTEGER;
var2 REAL;
var3 varchar2(20) ;
BEGIN
null;
END;
/
Выход:
PL/SQL procedure successfully completed.
- Объяснение:
- SET SERVEROUTPUT ON : используется для отображения буфера, используемого dbms_output.
- var1 INTEGER : это объявление переменной с именем var1 целочисленного типа. Существует много других типов данных, которые могут использоваться, такие как float, int, real, smallint, long и т. Д. Он также поддерживает переменные, используемые в SQL, а также NUMBER (prec, scale), varchar, varchar2 и т. Д.
- Процедура PL / SQL успешно завершена. : Отображается, когда код скомпилирован и успешно выполнен.
- Косая черта (/) после END; : Косая черта (/) указывает SQL * Plus выполнить блок.
1.1) ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ:
Переменные также можно инициализировать, как и в других языках программирования. Давайте посмотрим пример для того же:
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
var1 INTEGER := 2 ;
var3 varchar2(20) := 'I Love GeeksForGeeks' ;
BEGIN
null;
END;
/
Выход:
PL/SQL procedure successfully completed.
Объяснение:
- Оператор присваивания (: =) : используется для присвоения значения переменной.
- Отображение вывода :
Выходные данные отображаются с помощью DBMS_OUTPUT, который является встроенным пакетом, который позволяет пользователю отображать выходные данные, информацию об отладке и отправлять сообщения из блоков PL / SQL, подпрограмм, пакетов и триггеров.
Давайте посмотрим пример, чтобы увидеть, как отобразить сообщение с использованием PL / SQL:
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
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:
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
-- I am a comment, so i will be ignored.
var varchar2(40) := 'I love GeeksForGeeks' ;
BEGIN
dbms_output.put_line(var);
END;
/
Выход:
I love GeeksForGeeks PL/SQL procedure successfully completed.
Принимая входные данные от пользователя :
Как и в других языках программирования, в PL / SQL мы также можем принимать ввод от пользователя и сохранять его в переменной. Давайте посмотрим на пример, чтобы показать, как принимать данные от пользователей в PL / SQL:
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
-- 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, чтобы продемонстрировать все вышеперечисленные концепции в одном блоке кода.
--PL/SQL code to print sum of two numbers taken from the user.
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
-- 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;
/
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.