В этой главе мы обсудим типы данных в 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’ . Нуль может быть назначен, но он не может быть приравнен ни к чему, включая себя.