Типы данных
Символьные типы данных
_char_
(размер) Максимальный размер 2000 байт. Размер — количество символов фиксированной длины. Если сохраняемое значение короче, то дополняется пробелами; если длиннее, то выдается ошибка.
_nchar_
(размер) Максимальный размер 2000 байт. Где размер — количество символов фиксированной длины в кодировке Unicode. Если сохраняемое значение короче, то дополняется пробелами; если длиннее, то выдается ошибка.
_nvarchar2_
(размер) Максимальный размер 4000 байт. Где размер – количество сохраняемых символов в кодировке Unicode переменной длины.
_varchar2_
(размер) Максимальный размер 4000 байт. Максимальный размер в PLSQL 32KB. Где размер – количество сохраняемых символов переменной длины.
_long_
Максимальный размер 2GB. Символьные данные переменной длины.
_raw_
Максимальный размер 2000 байт. Содержит двоичные данные переменной длины
_long raw_
Максимальный размер 2GB. Содержит двоичные данные переменной длины
Числовые типы данных
_number_
(точность,масштаб) Точность может быть в диапазоне от 1 до 38.
Масштаб может быть в диапазоне от -84 до 127. Например,number (14,5) представляет собой число, которое имеет 9 знаков до запятой и 5 знаков после запятой.
_numeric_
(точность,масштаб) Точность может быть в диапазоне от 1 до 38. Например, numeric(14,5) представляет собой число, которое имеет 9 знаков до запятой и 5 знаков после запятой.
_PLS_INTEGER_
Целые числа в диапазоне от -2,147,483,648 до 2,147,483,647. Значение PLS_INTEGER требуют меньше памяти и быстрее значений NUMBER
Дата/время типы данных
_date_
Дата в Oracle может принимать значения от 1 января 4712 года до н.э. до 31 декабря 9999 года нашей эры.
Вид данных Record
Вы можете дать определение виду данных Record, этот вид данных содержит несколько столбцов. Синтаксис:
TYPE Type_Record_Name IS
RECORD (Col1 Datatype1 [NOT NULL{:=|DEFAULT} expression],
Col2 Datatype2 [NOT NULL{:=|DEFAULT} expression],
...
);
-- После определения типа записи объявляется переменная типа этой записи
variable_name Type_Record_Name;
Пример:
Declare
v_Emp_Id Employee.Emp_Id%Type := 1;
-- Define Record data type has 3 column.
Type Emp_Name_Type Is Record(
Emp_First_Name Employee.First_Name%Type
,Emp_Last_Name Employee.Last_Name%Type
,Emp_Full_Name Varchar2(50));
v_Emp Emp_Name_Type;
Объявление переменных в PL/SQL
В операторе DECLARE можно объявлять как переменные, так и константы. Прежде чем использовать какую-либо переменную ее нужно обязательно объявить. Переменная в PL/SQL может представлять собой как переменную встроенного типа, такого как DATE, NUMBER, VARCHAR2 или CHAR, так и составного вроде VARRAY. Помимо этого, в PL/SQL еще применяются такие типы данных, как BINARY_INTEGER и BOOLEAN.
Ниже приведены некоторые типичные примеры объявления переменной в PL/SQL:
hired_date DATE;
emp_name VARCHAR2(30);
Помимо переменных также можно объявлять и константы, как показано в следующем примере:
tax_rate constant number := 0.08;
Еще можно использовать атрибут %TYPE и с его помощью указывать при объявлении переменной, что ее тип данных должен совпадать с типом данных определенного столбца таблицы:
emp_num employee.emp_id%TYPE;
Посредством атрибута %ROWTYPE можно указывать, что тип данных записи (строки) должен совпадать с типом данных определенной таблицы базы данных. Например, в следующем коде указано, что запись DeptRecordдолжна содержать все те же столбцы, что и таблица department, а типы данных и длина этих столбцов в ней должны выглядеть абсолютно идентично:
declare
v_DeptRecord department%ROWTYPE;
Вопросы для самопроверки
- Перечислите символьные типы данных Oracle
- Перечислите числовые типы данных Oracle
- Как объявляется запись?
- В какаом операторе объявляются переменные и константы?
- Посредством какого атрибута можно указывать, что тип данных записи?
Задания
- Объявите три переменных любого типа на ваш выбор
- Создайте запись с числовым и символьным атрибутами и присвойте его переменной
- Объявите числовую переменную и присвойте ей разность двух чисел