PL/SQL - Основы синтаксиса
Добро пожаловать, будущие программисты! Сегодня мы окунаемся в захватывающий мир PL/SQL. Не волнуйтесь, если вы никогда не писали ни строчки кода - мы начнем с азов и шаг за шагом будем строить ваши знания. К концу этого учебника вы будете уверенно писать свои первые программы на PL/SQL!
Пример 'Hello World'
Давайте начнем с традиционной программы "Hello World". Это своего рода ритуал passage для каждого программиста, и это великолепный способ окунуться в синтаксис PL/SQL.
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/
Разберем это:
-
BEGIN
: Этот ключевой слово标记ует начало нашего блока PL/SQL. -
DBMS_OUTPUT.PUT_LINE('Hello, World!');
: Эта строка выводит наше сообщение. Представьте это как способ PL/SQL говорить с нами. -
END;
: Это标记ует конец нашего блока PL/SQL. -
/
: Этотforward slash говорит SQL*Plus execute execute блок PL/SQL.
Когда вы выполните этот код, вы увидите "Hello, World!" на вашем экране. Поздравляю! Вы только что написали свою первую программу на PL/SQL.
Идентификаторы PL/SQL
Идентификаторы - это имена, которые мы даем различным элементам программы, таким как переменные, процедуры и функции. Они как бейджи для разных частей нашего кода. Вот правила для создания идентификаторов:
- Должен начинаться с буквы (A-Z или a-z)
- Может следовать за буквами, цифрами (0-9), долларами ($), подчеркиваниями (_), или значками фунта (#)
- Не может быть длиннее 30 символов
- Не может быть зарезервированным словом (например BEGIN, END, IF и т.д.)
Давайте посмотрим на несколько примеров:
DECLARE
employee_name VARCHAR2(50);
salary NUMBER;
dept_id NUMBER(5);
BEGIN
-- Код идет сюда
END;
/
В этом примере employee_name
, salary
и dept_id
являются всемиvalid идентификаторами.
Разделители PL/SQL
Разделители - это особые символы или символы, которые имеют конкретное значение в PL/SQL. Они как знаки препинания в предложении, помогая структурировать и разделять различные части нашего кода.
Вот таблица.common разделителей PL/SQL:
Разделитель | Описание |
---|---|
; | Терминация оператора |
% | Индикатор атрибута |
. | Выбор компонента |
( ) | Заключение списка параметров |
, | Разделитель параметров |
:= | Оператор присваивания |
=> | Оператор ассоциации |
-- | Индикатор однострочного комментария |
/ / | Индикаторы многострочного комментария |
Давайте посмотрим, как это работает в действии:
DECLARE
v_count NUMBER := 0; -- Оператор присваивания
v_name VARCHAR2(50) := 'John Doe';
BEGIN
v_count := v_count + 1; -- Терминация оператора
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name); -- Выбор компонента
END;
/
Комментарии PL/SQL
Комментарии - это как липучки в вашем коде. Они игнорируются компилятором, но могут быть incredibly полезны для объяснения того, что делает ваш код. В PL/SQL есть два типа комментариев:
- Однострочные комментарии: Начинаются с
--
- Многострочные комментарии: Заключены между
/*
и*/
Вот пример:
DECLARE
-- Это однострочный комментарий
v_pi NUMBER := 3.14159;
BEGIN
/*
Это многострочный комментарий.
Он может занимать несколько строк.
Очень полезно для более длинных объяснений.
*/
DBMS_OUTPUT.PUT_LINE('Значение pi: ' || v_pi);
END;
/
Блоки программ PL/SQL
Блоки программ PL/SQL являются строительными блоками PL/SQL приложений. Они как рецепты в кулинарной книге - каждый описывает, как выполнить определенную задачу. Основные типы следующие:
- Анонимные блоки
- Процедуры
- Функции
- Пакеты
Давайте рассмотрим примеры каждого:
1. Анонимный блок
Мы уже видели это в нашем примере "Hello World". Это блок кода, который не сохраняется в базе данных.
BEGIN
DBMS_OUTPUT.PUT_LINE('Это анонимный блок');
END;
/
2. Процедура
Процедура - это названный блок PL/SQL, который выполняет определенное действие.
CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;
/
-- Чтобы вызвать процедуру:
BEGIN
greet_user('Alice');
END;
/
3. Функция
Функция похожа на процедуру, но возвращает значение.
CREATE OR REPLACE FUNCTION calculate_area(p_radius IN NUMBER)
RETURN NUMBER IS
v_pi CONSTANT NUMBER := 3.14159;
BEGIN
RETURN v_pi * p_radius * p_radius;
END;
/
-- Чтобы использовать функцию:
DECLARE
v_area NUMBER;
BEGIN
v_area := calculate_area(5);
DBMS_OUTPUT.PUT_LINE('Площадь: ' || v_area);
END;
/
4. Пакет
Пакет - это коллекция связанных процедур, функций, переменных и других PL/SQL объектов.
CREATE OR REPLACE PACKAGE math_operations AS
FUNCTION add_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER;
FUNCTION subtract_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER;
END math_operations;
/
CREATE OR REPLACE PACKAGE BODY math_operations AS
FUNCTION add_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN a + b;
END add_numbers;
FUNCTION subtract_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN a - b;
END subtract_numbers;
END math_operations;
/
-- Чтобы использовать пакет:
DECLARE
v_result NUMBER;
BEGIN
v_result := math_operations.add_numbers(10, 5);
DBMS_OUTPUT.PUT_LINE('10 + 5 = ' || v_result);
v_result := math_operations.subtract_numbers(10, 5);
DBMS_OUTPUT.PUT_LINE('10 - 5 = ' || v_result);
END;
/
И вот и все! Мы рассмотрели базовый синтаксис PL/SQL, от простых программ "Hello World" до более сложных структур, таких как пакеты. Помните, что обучение программированию похоже на изучение нового языка - это требует практики и терпения. Не бойтесь экспериментировать с примерами кода, модифицировать их и видеть, что произойдет. Так вы действительно интегрируете эти концепции и станете熟练ным программистом PL/SQL.
Счастливого кодирования, и пусть ваши запросы всегда возвращают ожидаемые результаты!
Credits: Image by storyset