IgorSikors.github.io

My lessons Oracle

Follow me on GitHub

Типы данных

Символьные типы данных

_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;

Вопросы для самопроверки

  1. Перечислите символьные типы данных Oracle
  2. Перечислите числовые типы данных Oracle
  3. Как объявляется запись?
  4. В какаом операторе объявляются переменные и константы?
  5. Посредством какого атрибута можно указывать, что тип данных записи?

Задания

  1. Объявите три переменных любого типа на ваш выбор
  2. Создайте запись с числовым и символьным атрибутами и присвойте его переменной
  3. Объявите числовую переменную и присвойте ей разность двух чисел

Следующий урок