Скалярные типы данных

Каждая константа, переменная и параметр имеют тип данных (или тип), который определяет формат хранения, ограничения и допустимый диапазон значений. PL/SQL предоставляет множество предопределенных типов данных.

Скалярный тип данных (scalar data type) содержит одно значение и не имеет внутренних компонентов. Скалярные типы данных делятся на четыре категории:

  • Числовые
  • Символьные
  • Даты
  • Логические данные.

Символьный и числовой типы данных имеют подтипы, которые налагают определенные ограничения на базовый тип. Например, INTEGER (“целое число”) и POSITIVE (“положительное число”) являются подтипами базового типа NUMBER.

Числовые:
NUMBER [(точность, масштаб)] Числа с точность и масштабом. Точность в диапазоне от 1 до 38, а масштаб – от -84 до 127
BINARY_INTEGER Основной тип для целых числе от - 2 147 483 647 до 2 147 483 647
PLS_INTEGER Основной тип для целых числе со знаком - 2 147 483 647 до 2 147 483 647. Значение PLS_INTEGER требуют меньше памяти и быстрее значений NUMBER и BINARY_INTEGER. Арифметические операции на значениями типа PLS_INTEGER быстрее, чем над данными NUMBER



Символьные:
CHAR [ (Максимальная_Длина)] Основной тип для символьных данных постоянной длины до 32768 байтов. Если максимальная длина не задана, то по умолчанию она равна 1.
VARCHAR2 (Максимальная_Длина) Основной тип для символьных данных переменной длины до 32767 байтов. Для переменных и констант типа VARCHAR2 размера по умолчанию не существует.



Даты:
DATE Основной тип для дат и времени. Значение DATE включают время в секундах с полуночи. Дипозон дат: 4712 г. До.н.э – 9999 н.э.
TIMESTAMP [(точность)] Расширяет тип данных DATE и хранит год, месяц, день, час, минуту, секунду и доли секунды. Для задания точности необходимо указывать целое литеральное значение в диопазоне от 0 до 9. Это число цифр в дробной части поля секунд. По умолчанию - 6
TIMESTAMP [(точность)] WITH TIME ZONE Расширяет тип данных TIMESTAMP и содержит смещение временной зоны. Смещение временной зоны представляет собой разницу в часах и минутах между местным временем и универсальным глобальным временем (Coordinated Universal Time или UTC). Для задания точности необходимо указывать целое литеральное значение в дипозоне от 0 до 9. Это число цифр в дробной части поля секунд. По умолчанию – 6
TIMESTAMP [(точность)] WITH LOCAL TIME ZONE Расширяет тип данных TIMESTAMP и содержит смещение временной зоны. Смещение временной зоны представляет собой разницу в часах и минута между местным временем и универсальным глобальным временем UTC. В отличие от TIMESTAMP WITH TIME ZONE вставляемые в столбцы БД значения данного типа нормализуются в соответствии с временной зоной базы. Кроме того, смещение временной зоны не хранится в столбце. При извлечении значения из базы данных Oracle преобразует его к временной зоне сеанса.
INTERVAL YEAR [(точность)] TO MONTH Используется для хранения и манипулирования интервалами, содержащими годы и месяцы. Точность задает число цифр в поле лет. Нельзя использовать символические константы или переменные для задания точности; Необходимо указать целое литеральное значение в диапазоне от 0 до 4. По умолчанию - 2
INTERVAL DAY [(точность1)] TO SECOND [(точность1)] Используется для хранения и манипулирования интервалами, содержащими дни, часы, минуты и секунды. Точность 1 и Точность 2 определяют соответственно число цифр в поле дней и точность в поле секунд. В обоих случаях нельзя использовать символические константы или переменные для задания точности; Необходимо указать целое литеральное значение в диапазоне от 0 до 9. Значения по умолчанию соответственно -2 и 6



Логические:
BOOLEAN Основной тип для хранения значений, используемых в логических вычислениях: True (истинно), False(ложно) или NULL (не определено).