Учебники

PL / SQL — типы данных

В этой главе мы обсудим типы данных в PL / SQL. Переменные, константы и параметры PL / SQL должны иметь допустимый тип данных, который определяет формат хранения, ограничения и допустимый диапазон значений. Мы сосредоточимся на типах данных SCALAR и LOB в этой главе. Два других типа данных будут рассмотрены в других главах.

S.No Категория и описание
1

скаляр

Отдельные значения без внутренних компонентов, такие как NUMBER, DATE или BOOLEAN .

2

Большой объект (LOB)

Указатели на крупные объекты, которые хранятся отдельно от других элементов данных, таких как текст, графические изображения, видеоклипы и звуковые сигналы.

3

композитный

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

4

Ссылка

Указатели на другие элементы данных.

скаляр

Отдельные значения без внутренних компонентов, такие как NUMBER, DATE или BOOLEAN .

Большой объект (LOB)

Указатели на крупные объекты, которые хранятся отдельно от других элементов данных, таких как текст, графические изображения, видеоклипы и звуковые сигналы.

композитный

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

Ссылка

Указатели на другие элементы данных.

Скалярные типы данных PL / SQL и подтипы

Скалярные типы данных и подтипы PL / SQL подпадают под следующие категории:

S.No Тип даты и описание
1

числовой

Числовые значения, над которыми выполняются арифметические операции.

2

символ

Буквенно-цифровые значения, которые представляют отдельные символы или строки символов.

3

логический

Логические значения, над которыми выполняются логические операции.

4

Datetime

Даты и время

числовой

Числовые значения, над которыми выполняются арифметические операции.

символ

Буквенно-цифровые значения, которые представляют отдельные символы или строки символов.

логический

Логические значения, над которыми выполняются логические операции.

Datetime

Даты и время

PL / SQL предоставляет подтипы типов данных. Например, тип данных NUMBER имеет подтип INTEGER. Вы можете использовать подтипы в вашей PL / SQL-программе, чтобы сделать типы данных совместимыми с типами данных в других программах, в то же время внедряя код PL / SQL в другую программу, такую ​​как Java-программа.

Числовые типы данных и подтипы PL / SQL

В следующей таблице перечислены предварительно определенные числовые типы данных PL / SQL и их подтипы.

S.No Тип данных и описание
1

PLS_INTEGER

Целое число со знаком в диапазоне от -2 147 483 648 до 2 147 483 647, представленное в 32 битах

2

BINARY_INTEGER

Целое число со знаком в диапазоне от -2 147 483 648 до 2 147 483 647, представленное в 32 битах

3

BINARY_FLOAT

Число с плавающей запятой в формате IEEE 754 одинарной точности

4

BINARY_DOUBLE

Число с плавающей точкой в ​​формате IEEE 754 двойной точности

5

НОМЕР (предварительный, масштаб)

Число с фиксированной запятой или с плавающей запятой с абсолютным значением в диапазоне от 1E-130 до (но не включая) 1.0E126. Переменная NUMBER также может представлять 0

6

DEC (предварительно, шкала)

Специфичный для ANSI тип с фиксированной запятой с максимальной точностью 38 десятичных цифр

7

ДЕСЯТИЧНЫЙ (предварительно, масштаб)

Специфичный для IBM тип с фиксированной точкой с максимальной точностью 38 десятичных цифр

8

ЧИСЛЕННЫЙ (до, в секундах)

Плавающий тип с максимальной точностью 38 десятичных цифр

9

ДВОЙНАЯ ТОЧНОСТЬ

Специфичный для ANSI тип с плавающей точкой с максимальной точностью 126 двоичных цифр (приблизительно 38 десятичных цифр)

10

FLOAT

Специфичный для ANSI и IBM тип с плавающей запятой с максимальной точностью 126 двоичных цифр (приблизительно 38 десятичных цифр)

11

INT

Специфичный целочисленный тип ANSI с максимальной точностью 38 десятичных цифр

12

INTEGER

Специфичный целочисленный тип ANSI и IBM с максимальной точностью 38 десятичных цифр

13

SMALLINT

Специфичный целочисленный тип ANSI и IBM с максимальной точностью 38 десятичных цифр

14

РЕАЛЬНЫЙ

Тип с плавающей точкой с максимальной точностью 63 двоичных знака (приблизительно 18 десятичных знаков)

PLS_INTEGER

Целое число со знаком в диапазоне от -2 147 483 648 до 2 147 483 647, представленное в 32 битах

BINARY_INTEGER

Целое число со знаком в диапазоне от -2 147 483 648 до 2 147 483 647, представленное в 32 битах

BINARY_FLOAT

Число с плавающей запятой в формате IEEE 754 одинарной точности

BINARY_DOUBLE

Число с плавающей точкой в ​​формате IEEE 754 двойной точности

НОМЕР (предварительный, масштаб)

Число с фиксированной запятой или с плавающей запятой с абсолютным значением в диапазоне от 1E-130 до (но не включая) 1.0E126. Переменная NUMBER также может представлять 0

DEC (предварительно, шкала)

Специфичный для ANSI тип с фиксированной запятой с максимальной точностью 38 десятичных цифр

ДЕСЯТИЧНЫЙ (предварительно, масштаб)

Специфичный для IBM тип с фиксированной точкой с максимальной точностью 38 десятичных цифр

ЧИСЛЕННЫЙ (до, в секундах)

Плавающий тип с максимальной точностью 38 десятичных цифр

ДВОЙНАЯ ТОЧНОСТЬ

Специфичный для ANSI тип с плавающей точкой с максимальной точностью 126 двоичных цифр (приблизительно 38 десятичных цифр)

FLOAT

Специфичный для ANSI и IBM тип с плавающей запятой с максимальной точностью 126 двоичных цифр (приблизительно 38 десятичных цифр)

INT

Специфичный целочисленный тип ANSI с максимальной точностью 38 десятичных цифр

INTEGER

Специфичный целочисленный тип ANSI и IBM с максимальной точностью 38 десятичных цифр

SMALLINT

Специфичный целочисленный тип ANSI и IBM с максимальной точностью 38 десятичных цифр

РЕАЛЬНЫЙ

Тип с плавающей точкой с максимальной точностью 63 двоичных знака (приблизительно 18 десятичных знаков)

Ниже приведена действительная декларация —

DECLARE 
   num1 INTEGER; 
   num2 REAL; 
   num3 DOUBLE PRECISION; 
BEGIN 
   null; 
END; 
/ 

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

PL/SQL procedure successfully completed 

Типы и подтипы символьных данных PL / SQL

Ниже приведена подробная информация о предопределенных символьных типах данных PL / SQL и их подтипах.

S.No Тип данных и описание
1

CHAR

Строка символов фиксированной длины с максимальным размером 32 767 байт

2

VARCHAR2

Строка символов переменной длины с максимальным размером 32 767 байт

3

RAW

Двоичная или байтная строка переменной длины с максимальным размером 32 767 байт, не интерпретируется PL / SQL

4

NCHAR

Строка национального символа фиксированной длины с максимальным размером 32 767 байт

5

NVARCHAR2

Строка национального символа переменной длины с максимальным размером 32 767 байт

6

ДОЛГО

Строка символов переменной длины с максимальным размером 32 760 байт

7

ДЛИННАЯ СЫРЬЯ

Двоичная или байтная строка переменной длины с максимальным размером 32 760 байт, не интерпретируется PL / SQL

8

ROWID

Физический идентификатор строки, адрес строки в обычной таблице

9

UROWID

Универсальный идентификатор строки (физический, логический или внешний идентификатор строки)

CHAR

Строка символов фиксированной длины с максимальным размером 32 767 байт

VARCHAR2

Строка символов переменной длины с максимальным размером 32 767 байт

RAW

Двоичная или байтная строка переменной длины с максимальным размером 32 767 байт, не интерпретируется PL / SQL

NCHAR

Строка национального символа фиксированной длины с максимальным размером 32 767 байт

NVARCHAR2

Строка национального символа переменной длины с максимальным размером 32 767 байт

ДОЛГО

Строка символов переменной длины с максимальным размером 32 760 байт

ДЛИННАЯ СЫРЬЯ

Двоичная или байтная строка переменной длины с максимальным размером 32 760 байт, не интерпретируется PL / SQL

ROWID

Физический идентификатор строки, адрес строки в обычной таблице

UROWID

Универсальный идентификатор строки (физический, логический или внешний идентификатор строки)

Булевы типы данных PL / SQL

Тип данных BOOLEAN хранит логические значения, которые используются в логических операциях. Логическими значениями являются логические значения TRUE и FALSE и значение NULL .

Однако SQL не имеет типа данных, эквивалентного BOOLEAN. Следовательно, булевы значения не могут быть использованы в —

  • Операторы SQL
  • Встроенные функции SQL (такие как TO_CHAR )
  • Функции PL / SQL, вызываемые из операторов SQL

Типы даты и времени PL / SQL и интервалов

Тип данных DATE используется для хранения даты и времени фиксированной длины, которые включают время дня в секундах с полуночи. Действительные даты колеблются с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э.

Формат даты по умолчанию устанавливается параметром инициализации Oracle NLS_DATE_FORMAT. Например, значением по умолчанию может быть «DD-MON-YY», которое включает двузначное число для дня месяца, сокращение названия месяца и две последние цифры года. Например, 01-ОКТЯБРЬ-12.

Каждая ДАТА включает в себя век, год, месяц, день, час, минуту и ​​секунду. В следующей таблице приведены допустимые значения для каждого поля —

Имя поля Допустимые значения даты и времени Допустимые значения интервала
ГОД От -4712 до 9999 (исключая год 0) Любое ненулевое целое число
МЕСЯЦ 01 до 12 От 0 до 11
ДЕНЬ С 01 по 31 (ограничено значениями MONTH и YEAR в соответствии с правилами календаря для локали) Любое ненулевое целое число
ЧАС От 00 до 23 От 0 до 23
МИНУТЫ От 00 до 59 От 0 до 59
ВТОРОЙ От 00 до 59,9 (n), где 9 (n) — точность долей времени в секундах От 0 до 59,9 (n), где 9 (n) — точность интервала долей секунд
TIMEZONE_HOUR От -12 до 14 (диапазон учитывает изменения летнего времени) Непригодный
TIMEZONE_MINUTE От 00 до 59 Непригодный
TIMEZONE_REGION Найдено в динамическом представлении производительности V $ TIMEZONE_NAMES Непригодный
TIMEZONE_ABBR Найдено в динамическом представлении производительности V $ TIMEZONE_NAMES Непригодный

Типы данных больших объектов PL / SQL (LOB)

Типы данных больших объектов (LOB) относятся к большим элементам данных, таким как текст, графические изображения, видеоклипы и звуковые сигналы. Типы данных LOB обеспечивают эффективный случайный кусочный доступ к этим данным. Ниже приведены предопределенные типы данных PL / SQL LOB.

Тип данных Описание Размер
BFILE Используется для хранения больших двоичных объектов в файлах операционной системы за пределами базы данных. В зависимости от системы. Не может превышать 4 гигабайта (ГБ).
большой двоичный объект Используется для хранения больших двоичных объектов в базе данных. От 8 до 128 терабайт (ТБ)
CLOB Используется для хранения больших блоков символьных данных в базе данных. От 8 до 128 ТБ
NCLOB Используется для хранения больших блоков данных NCHAR в базе данных. От 8 до 128 ТБ

Пользовательские подтипы PL / SQL

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

PL / SQL предопределяет несколько подтипов в пакете STANDARD . Например, PL / SQL предопределяет подтипы CHARACTER и INTEGER следующим образом:

SUBTYPE CHARACTER IS CHAR; 
SUBTYPE INTEGER IS NUMBER(38,0);

Вы можете определить и использовать свои собственные подтипы. Следующая программа иллюстрирует определение и использование пользовательского подтипа —

DECLARE 
   SUBTYPE name IS char(20); 
   SUBTYPE message IS varchar2(100); 
   salutation name; 
   greetings message; 
BEGIN 
   salutation := 'Reader '; 
   greetings := 'Welcome to the World of PL/SQL'; 
   dbms_output.put_line('Hello ' || salutation || greetings); 
END; 
/ 

Когда приведенный выше код выполняется в командной строке SQL, он дает следующий результат —

Hello Reader Welcome to the World of PL/SQL 
 
PL/SQL procedure successfully completed. 

NULL в PL / SQL

Значения PL / SQL NULL представляют отсутствующие или неизвестные данные, и они не являются целыми числами, символами или любыми другими конкретными типами данных. Обратите внимание, что NULL не совпадает с пустой строкой данных или нулевым символьным значением ‘\ 0’ . Нуль может быть назначен, но он не может быть приравнен ни к чему, включая себя.