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

Що таке типи даних 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 буде виділяти пам'ять лише після визначення змінної, тобто 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. Вихід коду буде істинним або хибним залежно від встановленої умови.

Тип даних 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 січняst, дата 2015 року.
  • Друга декларація оголошує змінну current_date як тип даних DATE і присвоює значення з поточною системною датою.
  • Обидві ці змінні містять інформацію про час.

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

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

  • Кількість стовпців у таблиці з типом даних LONG обмежена 1, тоді як таблиця не має обмежень щодо кількості стовпців із типом даних 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 обмежено для операційної системи, і вони призначені лише для читання і не можуть бути змінені.

Підсумки

Ми розглянули різні прості типи даних, доступні в PL / SQL разом із їхнім синтаксисом. Ми дізнаємося про складні типи даних у наступних темах.