Семейство символьных типов

VARCHAR2- данный тип аналогичен типу VARCHAR2, применяемому в базах данных. При помощи переменных типа VARCHAR2 можно хранить строки символов переменной длины. Синтаксис:

VARCHAR2(L[CHAR|BYTE])

где L — максимальная длина (length) переменной, CHAR или BYTE используется для указания того, что L измеряется в символах или байтах соответственно (по умолчанию применяется CHAR). Указание длины обязательно — значения по умолчанию не существует. Максимальная длина переменной типа VARCHAR2 составляет 32 767 байт. Например, база данных использует набор символов UTF8, который содержит многобайтовые символы переменной длины. Максимальная длина символа UTF8=3 байтам. Это означает, что переменная, объявленная как VARCHAR2(300 BYTE), может содержать максимум 100 символов в зависимости от реальных хранимых символов.

В поле столбца базы данных, имеющем тип VARCHAR2, можно хранить только 4000 байт. Поэтому, если длина PL/SQL-переменной типа VARCHAR2 превышает 4000 байт, то ее можно ввести лишь в столбец таблицы базы данных, имеющий тип LONG, максимальный размер которого составляет 2 Гбайт или CLOB (4 Гбайт). Аналогично, данные LONG и CLOB нельзя поместить в переменную VARCHAR2, если их размер превышает 32 767 байт.

Типу VARCHAR2 эквивалентны подтипы VARCHAR и STRING.

 

CHAR- строки символов фиксированной длины. Синтаксис:

CHAR[(L[CHAR|BYTE])]

где L — максимальная длина в байтах, CHAR и BYTE используются для указания на то, что L будет измеряться в символах или байтах соответственно (по умолчанию применяется CHAR).. Однако в отличие от типа VARCHAR2 в этом случае указание длины необязательно. Если она не задана, принимается значение по умолчанию, равное 1, причем круглые скобки не нужны. Переменные типа CHAR имеют фиксированную длину, поэтому при необходимости они заполняются до максимальной длины пробелами. Следовательно, переменные типа CHAR не всегда будут совпадать при выполнении операций сравнения символов.

Максимальная длина переменной типа CHAR равна 32 767 байт. Максимальная же ширина поля столбца базы данных, имеющего тип CHAR, составляет 2000 байт. Таким образом, если в переменной CHAR содержится более 2000 байт, ее можно ввести только в столбец базы данных типа VARCHAR2 (если длина <= 4000 байт) или LONG. Аналогично, данные типа LONG можно поместить в переменную типа CHAR только в случае, если их размер составляет не более 32 767 байт.

Подтипом CHAR, имеющим те же ограничения, является CHARACTER.

LONG- в отличие от типа LONG, используемого в базах данных и позволяющего хранить до 2 Гбайт информации, при помощи данного типа PL/SQL можно сохранять последовательности символов переменной длины, максимальный размер которых равен 32 760 байт. Переменные LONG очень похожи на переменные VARCHAR2. Если в поле столбца LONG базы данных содержится более 32 760 байт информации, то поместить эту информацию в PL/SQL-переменную LONG нельзя. Однако максимальная длина PL/SQL-переменной LONG меньше, чем поле LONG базы данных, поэтому PL/SQL-переменная LONG может быть помещена в столбец LONG таблицы базы данных без ограничений.

NCHAR и NVARCHAR2– дополнительные символьные типы NLS (National Language Support — поддержканациональных языков). Они служат для хранения строк символов с применением набора символов, отличного от того, который используется в языке программирования PL/SQL. Такой набор называется национальным набором символов (national character set). Переменные типов NCHAR и NVARCHAR2 описываются и используются точно так же, как переменные типов CHAR и VARCHAR2. Однако длина может меняться в зависимости от применяемого национального набора символов.