Oracle Типи даних PL/SQL: Boolean, Number, Date [Приклад]

⚡ Розумний підсумок

Типи даних PL/SQL визначають, як Oracle зберігає, обробляє та обмежує кожне значення в блоці. Вони групуються в сімейства символів, чисел, логічних значень, дат та великих об'єктів (LOB), кожне з яких має власний формат зберігання, обмеження розміру та правила призначення.

  • 🔤 Характер: CHAR має фіксовану довжину, VARCHAR2 — змінну довжину, а NCHAR та NVARCHAR2 використовують національний набір символів.
  • 🔢 Кількість: Функція NUMBER зберігає значення з фіксованою або плаваючою комою з точністю до 38 цифр.
  • Логічне значення: Має значення TRUE або FALSE та використовується переважно в умовній логіці.
  • 📅 Дата: Зберігає дату та час, за замовчуванням встановлюючи північ, якщо час не вказано.
  • 🗂️ ЛОБ: BLOB, CLOB, NCLOB та BFILE зберігають великі неструктуровані дані обсягом до 128 ТБ.
  • 💡 Найкраща практика: Надавайте перевагу VARCHAR2 над CHAR та LOB над LONG, щоб заощадити пам'ять та забезпечити готовність до майбутніх дій.
  • 🔗 Сфера застосування: Типи SQL застосовуються до стовпців таблиці; типи PL/SQL використовуються всередині блоків PL/SQL.

Oracle Типи даних PL/SQL

Що таке типи даних PL/SQL?

Типи даних у PL/SQL визначити, як дані будуть зберігатися, оброблятися та оброблюватися Oracle під час зберігання та обробки. Типи даних пов'язані з певним форматом зберігання та обмеженнями діапазону. У Oracle, кожному значенню або константі присвоюється тип даних.

Основна відмінність PL/SQL від SQL типи даних полягає в тому, що типи даних SQL обмежені стовпцями таблиці, тоді як типи даних PL/SQL використовуються в Блоки PL/SQL. Детальніше про це далі в підручнику.

Нижче наведено схему різних Oracle Типи даних PL/SQL:

Різні типи даних у PL/SQL
Різні типи даних у PL/SQL

Тип даних PL/SQL CHARACTER

Цей тип даних зберігає буквено-цифрові символи у рядковому форматі. Літеральні значення завжди слід брати в одинарні лапки під час присвоєння їх типу даних CHARACTER.

Цей тип символьних даних додатково класифікується наступним чином:

  • Тип даних CHAR (фіксований розмір рядка)
  • Тип даних VARCHAR2 (змінний розмір рядка)
  • Тип даних VARCHAR
  • NCHAR (власний фіксований розмір рядка)
  • NVARCHAR2 (власний змінний розмір рядка)
  • ДОВГИЙ і ДОВГИЙ СИРИЙ
Тип даних Опис синтаксис
CHAR Цей тип даних зберігає рядкове значення, а розмір рядка фіксований під час оголошення. змінна.

  • Oracle доповнює змінну порожнім символом, якщо вона не займає весь оголошений розмір, тому Oracle виділяє пам'ять для оголошеного розміру, навіть якщо змінна його не заповнює.
  • Обмеження розміру 1-2000 байт.
  • CHAR більш доречний там, де обробляються дані фіксованого розміру.
grade CHAR;
manager CHAR (10):= 'guru99';

Пояснення синтаксису:

  • Перший оператор оголошує змінну 'grade' типу даних CHAR з максимальним розміром 1 байт (значення за замовчуванням).
  • Другий оператор оголошує змінну 'manager' типу даних CHAR з максимальним розміром 10 та присвоює їй значення 'guru99', яке становить 6 байтів. Oracle у цьому випадку виділяє 10 байтів, а не 6.
VARCHAR2 Цей тип даних зберігає рядок, але довжина не фіксована.

  • Обмеження розміру становить від 1 до 4000 байт для стовпця таблиці та від 1 до 32767 байт для змінної.
  • Розмір визначається для кожної змінної під час оголошення.
  • Oracle виділяє пам'ять лише після визначення змінної, тому використовується фактична довжина збереженого рядка, а не оголошений розмір.
  • Завжди добре використовувати VARCHAR2 замість CHAR для оптимізації використання пам'яті.
manager VARCHAR2(10) := 'guru99';

Пояснення синтаксису:

  • В інструкції оголошується змінна 'manager' типу даних VARCHAR2 з максимальним розміром 10 та присвоюється значення 'guru99', яке становить 6 байтів. Oracle тут виділяє пам'ять лише 6 байт.
ВАРЧАР Це синонім типу даних VARCHAR2.

  • Завжди гарною практикою є використання VARCHAR2 замість VARCHAR, щоб уникнути змін у поведінці.
manager VARCHAR(10) := 'guru99';

Пояснення синтаксису:

  • В інструкції оголошується змінна 'manager' типу даних VARCHAR з максимальним розміром 10 та присвоюється 'guru99', 6 байт. Oracle виділяє лише 6 байтів, подібно до VARCHAR2.
NCHAR Цей тип даних такий самий, як CHAR, але набір символів є національним набором символів.

  • Цей набір символів можна визначити для сеансу за допомогою NLS_PARAMETERS.
  • Набір символів може бути UTF16 або UTF8.
  • Обмеження розміру 1-2000 байт.
native NCHAR(10);

Пояснення синтаксису:

  • В інструкції оголошується змінна 'native' типу даних NCHAR з максимальним розміром 10.
  • Довжина залежить від кількості байтів на символ, визначених у наборі символів.
NVARCHAR2 Цей тип даних такий самий, як VARCHAR2, але набір символів є національним набором символів.

  • Цей набір символів можна визначити для сеансу за допомогою NLS_PARAMETERS.
  • Набір символів може бути UTF16 або UTF8.
  • Обмеження розміру 1-4000 байт.
Native_var NVARCHAR2(10):= 'guru99';

Пояснення синтаксису:

  • В інструкції оголошується змінна 'Native_var' типу даних NVARCHAR2 з максимальним розміром 10.
ДОВГИЙ і ДОВГИЙ СИРИЙ Цей тип даних зберігає великий текст або необроблені дані розміром до 2 ГБ.

  • Вони в основному використовуються в словнику даних.
  • LONG зберігає дані набору символів, тоді як LONG RAW зберігає дані у двійковому форматі.
  • LONG RAW приймає медіаоб'єкти та зображення, тоді як LONG працює лише з даними, які можна зберігати за допомогою набору символів.
Large_text LONG;
Large_raw LONG RAW;

Пояснення синтаксису:

  • В інструкції оголошується 'Large_text' типу даних LONG та 'Large_raw' типу даних LONG RAW.

Примітка: Використання типу даних LONG не рекомендується OracleНатомість слід надавати перевагу типу даних LOB.

Тип даних PL/SQL NUMBER

Цей тип даних зберігає числа з фіксованою або плаваючою комою з точністю до 38 цифр. Він використовується для роботи з полями, що містять лише числові дані. Змінну можна оголосити як з точністю та десятковими цифрами, так і без них. Значення не потрібно брати в лапки під час присвоєння.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Пояснення синтаксису:

  • Перше оголошення оголошує змінну 'A' числового типу із загальною точністю 8 та 2 цифрами після коми.
  • Другий оголошує 'B' числового типу із загальною точністю 8 та без десяткових цифр.
  • Третій — найзагальніший, він оголошує числовий тип даних «C» без обмежень на точність або десяткові знаки. Він може містити до 38 цифр.

Тип даних PL/SQL BOOLEAN

Цей тип даних зберігає логічні значення. Oracle Булевський тип даних може мати значення TRUE або FALSE та використовується переважно в умовних операторах. Значення не потрібно брати в лапки під час присвоєння.

Var1 BOOLEAN;

Пояснення синтаксису:

  • Змінна 'Var1' оголошена як логічне значення типу BOOLEAN. Вихід буде або true, або false залежно від встановленої умови.

Тип даних PL/SQL DATE

Цей тип даних зберігає значення у форматі дати, як число, місяць та рік. Щоразу, коли змінна визначається з типом даних DATE, вона може містити інформацію про час; за замовчуванням час встановлюється на 12:00:00, якщо не вказано значення. Значення потрібно брати в лапки під час присвоєння.

Стандарт Oracle Формат часу для вхідних та вихідних даних — «ДД-ПН-РР», який встановлюється в NLS_PARAMETERS (NLS_DATE_FORMAT) на рівні сеансу.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Пояснення синтаксису:

  • Змінна «newyear» оголошена як тип даних DATE та їй присвоюється значення 1 січня 2015 року.
  • У другому оголошенні 'current_date' оголошується типом даних DATE та присвоюється поточна системна дата.
  • Обидві змінні містять інформацію про час.

Тип даних LOB PL/SQL

Цей тип даних в основному використовується для зберігання та маніпулювання великими блоками неструктурованих даних, такими як зображення та мультимедійні файли. Oracle надає перевагу типу даних LOB над типом даних LONG, оскільки він є більш гнучким. Основні переваги LOB над LONG:

  • Таблиця обмежена одним стовпцем LONG, тоді як кількість стовпців LOB не обмежена.
  • Інструменти інтерфейсу даних приймають LOB під час реплікації, але пропускають стовпці LONG, які необхідно реплікувати вручну.
  • Стовпець LONG зберігає до 2 ГБ, тоді як LOB може зберігати до 128 ТБ.
  • Oracle постійно вдосконалює тип даних LOB з кожним випуском, тоді як LONG практично не змінюється.

Тому завжди краще використовувати тип даних LOB замість LONG. Різні типи даних LOB, наведені нижче, можуть зберігати до 128 терабайт:

  1. ЛИСТОК
  2. CLOB і NCLOB
  3. BFILE
Тип даних Опис синтаксис
ЛИСТОК Цей тип даних зберігає дані LOB у двійковому форматі файлу обсягом до 128 ТБ. Він не зберігає дані на основі деталей набору символів, тому може зберігати неструктуровані дані, такі як мультимедійні об'єкти та зображення.
Binary_data BLOB;

Пояснення синтаксису:

  • Змінна 'Binary_data' оголошується як BLOB.
CLOB і NCLOB CLOB зберігає дані LOB у наборі символів, тоді як NCLOB зберігає дані у рідному наборі символів. Оскільки ці сховища використовують сховище на основі набору символів, вони не можуть зберігати такі дані, як мультимедіа чи зображення. Максимальний розмір становить 128 ТБ.
Charac_data CLOB;

Пояснення синтаксису:

  • Змінна 'Charac_data' оголошена як тип даних CLOB.
BFILE
  • BFILE зберігає неструктуровані двійкові дані поза базою даних як файл операційної системи.
  • Розмір BFILE обмежений операційною системою, а файли доступні лише для читання та не можуть бути змінені.

Поширені запитання

CHAR має фіксовану довжину та доповнює пробілами оголошений розмір, витрачаючи місце на короткі значення. VARCHAR2 має змінну довжину та зберігає лише фактичні символи, тому він кращий для більшості рядкових стовпців.

LOB дозволяє використовувати багато стовпців на таблицю, зберігає до 128 ТБ та постійно вдосконалюється з кожним випуском. LONG обмежений одним стовпцем, лімітом 2 ГБ та зберігається головним чином для зворотної сумісності.

Не в старіших релізах. BOOLEAN був типом лише для PL/SQL, тому стовпці таблиці використовували прапорець NUMBER або CHAR. Він використовується безпосередньо всередині блоків для умовної логіки.

Так. Профілюючи вибіркові значення за довжиною, діапазоном та форматом, ШІ може пропонувати VARCHAR2, NUMBER, DATE або LOB та позначати стовпці, які є завеликими. Підтвердьте вибір для майбутніх даних.

Так. DATE зберігає століття, рік, місяць, день, годину, хвилину та секунду. Якщо час не вказано, за замовчуванням використовується північ. Для дробових секунд або часових поясів використовуйте TIMESTAMP.

Підсумуйте цей пост за допомогою: