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 байт (значение по умолчанию).
  • Во втором операторе объявления объявлена ​​переменная «менеджер» типа данных CHAR с максимальным размером 10 и присвоено значение «guru99», которое имеет размер 6 байт. Oracle в этом случае выделит память 10 байт, а не 6 байт.
ВАРЧАР2 Этот тип данных хранит строку, но длина строки не фиксирована.

  • Ограничение размера для этого типа данных составляет 1–4000 байт для размера столбца таблицы и 1–32767 байт для переменных.
  • Размер определяется для каждой переменной во время объявления переменной.
  • Созданием цифровых двойников возможности Oracle будет выделять память только после определения переменной, т. е. Oracle будет учитывать только фактическую длину строки, которая хранится в переменной для выделения памяти, а не размер, указанный для переменной в части объявления.
  • Всегда полезно использовать VARCHAR2 вместо типа данных CHAR для оптимизации использования памяти.
manager VARCHAR2(10) := ‘guru99';

Объяснение синтаксиса:

  • В приведенном выше операторе объявления объявлена ​​переменная «менеджер» типа данных VARCHAR2 с максимальным размером 10 и присвоено значение «guru99», которое имеет размер 6 байт. Oracle в этом случае выделит память только 6 байт.
ВАРЧАР Это синоним типа данных VARCHAR2.

  • Всегда полезно использовать VARCHAR2 вместо VARCHAR, чтобы избежать изменений в поведении.
manager VARCHAR(10) := ‘guru99';

Объяснение синтаксиса:

  • В приведенном выше операторе объявления объявлена ​​переменная «менеджер» типа данных VARCHAR с максимальным размером 10 и присвоено значение «guru99», которое имеет размер 6 байт. Oracle в этом случае выделит память только 6 байт. (Аналогично VARCHAR2)
НЧАР Этот тип данных аналогичен типу данных CHAR, но набор символов будет соответствовать национальному набору символов.

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

Объяснение синтаксиса:

  • Приведенный выше оператор объявления объявляет переменную «собственной» типа данных NCHAR с максимальным размером 10.
  • Длина этой переменной зависит от (количества длин) на байт, как определено в наборе символов.
НВАРЧАР2 Этот тип данных аналогичен типу данных 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

Этот тип данных хранит логические значения. 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 необходимо реплицировать вручную.
  • Размер столбца LONG составляет 2 ГБ, тогда как LOB может хранить до 128 ТБ.
  • Oracle постоянно совершенствует тип данных LOB в каждой своей версии в соответствии с современными требованиями, тогда как тип данных LONG является постоянным и не получает большого количества обновлений.

Поэтому всегда полезно использовать тип данных LOB вместо типа данных LONG. Ниже приведены различные типы данных LOB. Они могут хранить до 128 терабайт.

  1. Большой двоичный объект
  2. КЛОБ и НКЛОБ
  3. БФАЙЛ
Тип данных Описание Синтаксис
Большой двоичный объект Этот тип данных хранит LOB-данные в формате двоичного файла до максимального размера 128 ТБ. Здесь не сохраняются данные на основе деталей набора символов, поэтому можно хранить неструктурированные данные, такие как мультимедийные объекты, изображения и т. д.
Binary_data BLOB;

Объяснение синтаксиса:

  • В приведенном выше примере переменная «Binary_data» объявлена ​​как BLOB.
КЛОБ и НКЛОБ Тип данных CLOB сохраняет данные LOB в наборе символов, тогда как NCLOB хранит данные в собственном наборе символов. Поскольку эти типы данных используют хранилище на основе набора символов, они не могут хранить такие данные, как мультимедиа, изображения и т. д., которые нельзя поместить в строку символов. Максимальный размер этих типов данных составляет 128 ТБ.
Charac_data CLOB;

Объяснение синтаксиса:

  • В приведенном выше примере переменная «Charac_data» объявлена ​​как тип данных CLOB.
БФАЙЛ
  • BFILE — это типы данных, в которых данные неструктурированного двоичного формата хранятся вне базы данных в виде файла операционной системы.
  • Размер BFILE ограничен операционной системой, они доступны только для чтения и не могут быть изменены.

Резюме

Мы рассмотрели различные простые типы данных, доступные в PL/SQL вместе с их синтаксисом. Мы узнаем о сложных типах данных в дальнейших темах.