Учебники

5) Типы данных Oracle PL / SQL

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

Тип данных связан с конкретным форматом хранения и ограничениями диапазона. В Oracle каждому значению или константе присваивается тип данных.

По сути, он определяет, как данные хранятся, обрабатываются и обрабатываются Oracle во время хранения и обработки данных.

Основное различие между типами данных PL / SQL и SQL заключается в том, что тип данных SQL ограничен столбцом таблицы, а типы данных PL / SQL используются в блоках PL / SQL. Подробнее об этом позже в уроке.

Ниже приведена схема различных типов данных в PL / SQL.

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

В этом уроке вы узнаете

ХАРАКТЕР Тип данных:

Этот тип данных в основном хранит буквенно-цифровые символы в строковом формате.

Литеральные значения всегда должны быть заключены в одинарные кавычки при назначении их типу данных 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 байтов.
VARCHAR Это синоним типа данных 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 типа данных RAW LONG.

Примечание. Использование типа данных LONG в Oracle не рекомендуется. Вместо этого тип данных LOB должен быть предпочтительным.

НОМЕР Тип данных:

Этот тип данных хранит числа с фиксированной или плавающей точкой с точностью до 38 цифр. Этот тип данных используется для работы с полями, которые будут содержать только числовые данные. Переменная может быть объявлена ​​либо с точностью до десятичных цифр, либо без этой информации. При назначении этому типу данных значения не обязательно заключать в кавычки.

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

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

  • В приведенном выше первом объявлении объявляется, что переменная «A» имеет числовой тип данных с полной точностью 8 и десятичными цифрами 2.
  • Второе объявление объявляет, что переменная ‘B’ имеет числовой тип данных с полной точностью 8 и без десятичных цифр.
  • Третье объявление является наиболее общим, объявляет переменную ‘C’ с числовым типом данных без ограничений по точности или десятичным разрядам. Это может занимать до 38 цифр.

БУЛЕВЫЙ Тип данных:

Этот тип данных хранит логические значения. Он представляет собой ИСТИНА или ЛОЖЬ и в основном используется в условных выражениях. При назначении этому типу данных значения не обязательно заключать в кавычки.

Var1 BOOLEAN;

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

  • Выше переменная Var1 объявлена ​​как тип данных BOOLEAN. Вывод кода будет либо истинным, либо ложным в зависимости от установленного условия.

ДАТА Тип данных:

Этот тип данных хранит значения в формате даты в виде даты, месяца и года. Всякий раз, когда переменная определена с типом данных DATE вместе с датой, она может содержать информацию о времени, и по умолчанию информация о времени устанавливается в 12:00:00, если она не указана. При назначении этому типу данных значения должны быть заключены в кавычки.

Стандартный формат времени Oracle для ввода и вывода — «DD-MON-YY», и он снова устанавливается на NLS_PARAMETERS (NLS_DATE_FORMAT) на уровне сеанса.

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

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

  • В приведенном выше, переменная «Newyear» объявлен как тип DATE данных и присваивается значение Яном 1 — го , 2015 день.
  • Второе объявление объявляет переменную current_date как тип данных DATE и присваивает значение с текущей системной датой.
  • Обе эти переменные содержат информацию о времени.

Тип данных LOB:

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

  • Количество столбцов в таблице с типом данных LONG ограничено 1, тогда как в таблице нет ограничений на количество столбцов с типом данных LOB.
  • Инструмент интерфейса данных принимает тип данных LOB таблицы во время репликации данных, но не указывает столбец LONG таблицы. Эти столбцы LONG необходимо реплицировать вручную.
  • Размер столбца LONG составляет 2 ГБ, тогда как LOB может хранить до 128 ТБ.
  • Oracle постоянно улучшает тип данных LOB в каждом из своих выпусков в соответствии с современными требованиями, тогда как тип данных LONG постоянен и не получает много обновлений.

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

  1. большой двоичный объект
  2. CLOB и NCLOB
  3. BFILE
Тип данных Описание Синтаксис
большой двоичный объект

Этот тип данных хранит данные больших объектов в двоичном формате до максимального размера 128 ТБ. Он не хранит данные, основанные на деталях набора символов, поэтому он может хранить неструктурированные данные, такие как мультимедийные объекты, изображения и т. Д.

Binary_data BLOB;

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

  • Выше переменная ‘Binary_data’ объявлена ​​как BLOB.
CLOB и NCLOB

Тип данных CLOB сохраняет данные LOB в наборе символов, тогда как NCLOB сохраняет данные в собственном наборе символов. Поскольку эти типы данных используют хранилище на основе набора символов, они не могут хранить такие данные, как мультимедиа, изображения и т. Д., Которые нельзя поместить в строку символов. Максимальный размер этих типов данных составляет 128 ТБ.

Charac_data CLOB;

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

  • В приведенном выше примере переменная Character_data объявлена ​​как тип данных CLOB.
BFILE
  • BFILE — это типы данных, которые хранят данные неструктурированного двоичного формата вне базы данных в виде файла операционной системы.
  • Размер BFILE для ограниченной операционной системы, и они являются файлами только для чтения и не могут быть изменены.

Резюме

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