PL/SQL - Типы данных
Здравствуйте,野心勃勃的程序设计师们! Сегодня мы окунемся в fascinирующий мир типов данных PL/SQL. Не волнуйтесь, если вы новички в программировании; я буду вести вас по этому пути шаг за шагом. К концу этого урока вы будете чувствовать себя комфортно с различными типами данных в PL/SQL и будете готовы начать свое coding приключение!
PL/SQL скалярные типы данных и подтипы
Давайте начнем с азов. В PL/SQL скалярные типы данных являются строительными блоками наших программ. Они представляют собой единичные значения, такие как числа или текст.
Что такое скалярные типы данных?
Скалярные типы данных являются simplest формой данных в PL/SQL. Они resemble атомы нашего программного мира - малые, неделимые единицы, которые мы используем для создания более сложных структур.
Вот простой пример для проиллюстрирования скалярного типа данных:
DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('My name is: ' || my_name);
END;
В этом примере my_name
- это переменная типа VARCHAR2
, которая используется для хранения текста. Мы присвоили ей значение 'John Doe'. Когда мы выполним этот код, он выведет: "My name is: John Doe".
PL/SQL числовые типы данных и подтипы
Теперь давайте поговорим о числах. PL/SQL имеет несколько числовых типов данных для обработки различных видов чисел.
Общие числовые типы данных
Тип данных | Описание | Пример |
---|---|---|
NUMBER | Общий-purpose число | NUMBER(10,2) |
INTEGER | Целые числа | INTEGER |
BINARY_FLOAT | 32-битное浮点数 | BINARY_FLOAT |
BINARY_DOUBLE | 64-битное浮点数 | BINARY_DOUBLE |
Давайте посмотрим, как они работают:
DECLARE
my_integer INTEGER := 42;
my_float BINARY_FLOAT := 3.14;
my_salary NUMBER(8,2) := 5000.50;
BEGIN
DBMS_OUTPUT.PUT_LINE('The answer is: ' || my_integer);
DBMS_OUTPUT.PUT_LINE('Pi is approximately: ' || my_float);
DBMS_OUTPUT.PUT_LINE('My salary is: $' || my_salary);
END;
Этот скрипт declares три переменные с различными числовыми типами. Тип NUMBER(8,2)
для my_salary
означает, что он может хранить до 8 цифр в целом, с 2 цифрами после десятичной точки.
PL/SQL字符数据 типы и подтипы
Текстовые данные имеют важное значение в программировании. PL/SQL предоставляет несколько character данных типов для эффективной обработки текста.
Общие типы данных символов
Тип данных | Описание | Пример |
---|---|---|
VARCHAR2 | Variable-length строка символов | VARCHAR2(100) |
CHAR | Fixed-length строка символов | CHAR(10) |
NVARCHAR2 | Variable-length unicode строка | NVARCHAR2(100) |
NCHAR | Fixed-length unicode строка | NCHAR(10) |
Вот как мы используем их на практике:
DECLARE
my_varchar VARCHAR2(50) := 'Hello, World!';
my_char CHAR(10) := 'Fixed ';
my_nvarchar NVARCHAR2(50) := N'こんにちは'; -- Японский "Привет"
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || my_varchar);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || my_char || '(end)');
DBMS_OUTPUT.PUT_LINE('NVARCHAR2: ' || my_nvarchar);
END;
Обратите внимание, как тип CHAR
дополняет строку пробелами, чтобы заполнить его фиксированную длину.
PL/SQL логические типы данных
Логические типы данных необходимы для принятия решений в наших программах. Они могут принимать три возможных значения: TRUE, FALSE или NULL.
DECLARE
is_student BOOLEAN := TRUE;
has_job BOOLEAN := FALSE;
is_married BOOLEAN;
BEGIN
IF is_student THEN
DBMS_OUTPUT.PUT_LINE('This person is a student.');
END IF;
IF NOT has_job THEN
DBMS_OUTPUT.PUT_LINE('This person does not have a job.');
END IF;
IF is_married IS NULL THEN
DBMS_OUTPUT.PUT_LINE('We don''t know if this person is married.');
END IF;
END;
Этот скрипт demonstrates, как мы используем логические значения для принятия решений в нашем коде.
PL/SQL типы данных datetime и interval
При работе с датами и временем PL/SQL предоставляет специфические типы данных для точной обработки этих значений.
Общие типы datetime
Тип данных | Описание | Пример |
---|---|---|
DATE | Дата и время | DATE |
TIMESTAMP | Дата и время с дробными секундами | TIMESTAMP |
INTERVAL YEAR TO MONTH | Период времени в годах и месяцах | INTERVAL YEAR TO MONTH |
INTERVAL DAY TO SECOND | Период времени в днях, часах, минутах и секундах | INTERVAL DAY TO SECOND |
Давайте посмотрим, как они работают:
DECLARE
current_date DATE := SYSDATE;
future_date TIMESTAMP := SYSTIMESTAMP + INTERVAL '1' YEAR;
age_interval INTERVAL YEAR TO MONTH;
BEGIN
age_interval := (SYSDATE - TO_DATE('1990-01-01', 'YYYY-MM-DD')) YEAR TO MONTH;
DBMS_OUTPUT.PUT_LINE('Current date: ' || TO_CHAR(current_date, 'DD-MON-YYYY'));
DBMS_OUTPUT.PUT_LINE('Date after 1 year: ' || TO_CHAR(future_date, 'DD-MON-YYYY HH24:MI:SS.FF'));
DBMS_OUTPUT.PUT_LINE('Age: ' || age_interval);
END;
Этот скрипт demonstrates работу с датами, метками времени и интервалами.
PL/SQL Large Object (LOB) типы данных
Для обработки больших объемов данных PL/SQL предоставляет LOB (Large Object) типы данных.
Общие LOB типы
Тип данных | Описание | Пример |
---|---|---|
CLOB | Character Large Object | CLOB |
BLOB | Binary Large Object | BLOB |
NCLOB | National Character Large Object | NCLOB |
Вот простой пример использования CLOB:
DECLARE
my_clob CLOB;
BEGIN
my_clob := 'This is a very long string that could potentially be several megabytes in size.';
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.GETLENGTH(my_clob) || ' characters long');
END;
Этот скрипт создает CLOB и demonstrates, как получить его длину.
PL/SQL пользовательские подтипы
PL/SQL позволяет вам создавать свои собственные подтипы на основе существующих типов данных. Это может помочь сделать ваш код более читаемым и легко maintainable.
DECLARE
SUBTYPE positive_number IS NUMBER(8,2) CHECK (positive_number > 0);
my_salary positive_number;
BEGIN
my_salary := 5000.50;
DBMS_OUTPUT.PUT_LINE('My salary: $' || my_salary);
-- Это вызвало бы ошибку:
-- my_salary := -1000;
END;
В этом примере мы создали подтип positive_number
, который ensures, что значение всегда положительное.
NULL значения в PL/SQL
Наконец, давайте поговорим о NULL значениях. В PL/SQL NULL представляет собой неизвестное или недоступное значение. Он не такой, как ноль или пустая строка.
DECLARE
var1 NUMBER;
var2 VARCHAR2(10) := '';
BEGIN
IF var1 IS NULL THEN
DBMS_OUTPUT.PUT_LINE('var1 is NULL');
END IF;
IF var2 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('var2 is not NULL, it''s an empty string');
END IF;
END;
Этот скрипт demonstrates разницу между NULL и пустой строкой.
И вот и все! Мы рассмотрели основные типы данных в PL/SQL. Помните, что понимание типов данных является crucial для написания эффективного и безошибочного кода. Continue practicing, и вскоре вы станете профессионалом в PL/SQL!
Credits: Image by storyset