Типы данных Oracle PL / SQL: логическое значение, число, дата (пример)

Содержание:

Anonim

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

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

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

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

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

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

  • CHARACTER Тип данных
  • NUMBER Тип данных
  • Тип данных BOOLEAN
  • Тип данных DATE
  • Тип данных LOB

CHARACTER Тип данных:

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

Литеральные значения всегда должны быть заключены в одинарные кавычки при присвоении их типу данных CHARACTER.

Этот тип символьных данных дополнительно классифицируется следующим образом:

  • CHAR Тип данных (фиксированный размер строки)
  • VARCHAR2 Тип данных (размер переменной строки)
  • VARCHAR Тип данных
  • NCHAR (собственный фиксированный размер строки)
  • NVARCHAR2 (размер собственной переменной строки)
  • ДЛИННЫЙ и ДЛИННЫЙ RAW
Тип данных Описание Синтаксис
СИМВОЛ Этот тип данных хранит строковое значение, а размер строки фиксируется во время объявления переменной.
  • 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 с типом данных LONG RAW.
Примечание. Oracle не рекомендует использовать тип данных LONG. Вместо этого следует отдавать предпочтение типу данных LOB.

NUMBER Тип данных:

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

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

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

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

BOOLEAN Тип данных:

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

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

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

  1. BLOB
  2. CLOB и NCLOB
  3. BFILE
Тип данных Описание Синтаксис
BLOB

Этот тип данных хранит данные 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, а также их синтаксис. Мы узнаем о сложных типах данных в следующих разделах.