DeepEdit!

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

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

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

Переменные этих типов используются для хранения строковых или сим­вольных данных. В это семейство входят типы VARCHAR2, CHAR и LONG, а также NCHAR и NVARCHAR2 (два последних типа доступны то­лько в Огас1е8 и выше).
VARCHAR2 Этот тип аналогичен типу VARCHAR2, применяемому в ба­зах данных. При помощи переменных типа VARCHAR2 можно хранить строки символов переменной длины. Синтаксис объявления перемен­ной, имеющей тип VARCHAR2, таков:
VARCHAR2(L)
где L — максимальная длина (length) переменной. Указание длины обяза­тельно — значения по умолчанию не существует. Максимальная длина пе­ременной типа VARCHAR2 составляет 32 767 байт. Обратите внимание, что в поле столбца базы данных, имеющем тип VARCHAR2, можно хра­нить только 4000 байт. Если длина Piy SQL-переменной типа VARCHAR2 превышает 4000 байт, ее можно ввести лишь в столбец базы данных, име­ющий тип LONG, максимальный размер которого составляет 2 Гбайт или GLOB (4 Гбайт). Аналогично, данные LONG и CLOB нельзя поместить в переменную VARCHAR2, если их размер превышает 32 767 байт.

Внимание
в поле столбца базы данных, имеющем тип VARCHAR2, можно сохранять 2000 байт. Таким образом, PL/SQL-переменная VARCHAR2мoжeт быть записана в столбец Oracle7 VARCHAR2, только если ее длина не превышает 2000 байт.
Для типа VARCHAR2 длина указывается не в символах, а в байтах. Информация хранится в базе данных с помощью принятого набора сим­волов, например ASCII, EBCDIC Code Page 500 или набора многобайто­вых символов переменной длины, такого как Unicode. Если в некотором
наборе символов базы данных содержатся многобайтовые символы,
максимальное число символов, которое может храниться в переменной
типа VARCHAR2, скорее всего, будет меньше указанной длины. Дело в
том, что для представления одного символа может использоваться бо­лее одного байта.
Подтипы VARCHAR и STRING эквивалентны типу VARCHAR2.
Совет
Почему существуютдва типа: VARCHAR и VARCHAR2? Тип VARCHAR определен ANSI, а тип VARCHAR2 определен Oracle. В настоящее время они ведут себя одинаково. Если тип ANSI VARCHAR изменится в будущем, то Oracle VARCHAR2 не изменится,
В Огас1е9г синтаксис объявления переменной VARCHAR2 расширен до VARCHAR2 ([ CHAR | BYTE])
где также является максимальной длиной переменной. CHAR или
BYTE используется для указания того, что L измеряется в символах или байтах соответственно (по умолчанию применяется CHAR). Максималь­ная длина, однако, по-прежнему составляет 32 767 байт. Допустим, что база данных использует набор символов UTF8, который содержит мно­гобайтовые символы переменной длины. Максимальная длина символа
UTF8 равна 3 байтам. Это означает, что переменная, объявленная как VARCHAR2(300 BYTE), может содержать максимум 100 символов в зави­симости от реальных хранимых символов.
CHAR Переменные этого типа представляют собой строки символов фиксированной длины. Синтаксис объявления переменной CHAR таков:
CHAR [(/_,)]
где L — максимальная длина в байтах. Однако в отличие от типа VARCHAR2 в этом случае указание длины необязательно. Если она не задана, прини­мается значение по умолчанию, равное 1, причем круглые скобки не нуж­ны. Переменные типа CHAR имеют фиксированную длину, поэтому при необходимости они заполняются до максимальной длины пробелами.
Следовательно, переменные типа CHAR не всегда будут совпадать при выполнении операций сравнения символов (см. главу 4).
Максимальная длина переменной типа CHAR равна 32 767 байт. Мак­симальная же ширина поля столбца базы данных, имеющего тип CHAR,
составляет 2000 байт. Таким образом, если в переменной CHAR содер­жится более 2000 байт, ее можно ввести только в столбец базы данных
типа VARCHAR2 (если длина <= 4000 байт) или LONG. Аналогично, дан­ные типа LONG можно поместить в переменную типа CHAR только в слу­чае, если их размер составляет не более 32 767 байт.
Внимание
В Огасlе 7 поле столбца базы данных, имеющем тип CHAR, можно сохранять до 255 байт.

Как и для        длина переменной типа CHAR указывается не в
символах, а в байтах. Если в некотором наборе символов базы данных со­держатся многобайтовые символы, то максимальное число символов, ко­торое может храниться в переменной типа VARCHAR2, возможно, будет меньше указанной длины.
Подтипом CHAR, имеющим те же ограничения, является CHARACTER. Семантика переменных VARCHAR2 и переменных CHAR существенно различается (см. главу 4).
В ОгасЫЬ" синтаксис объявления переменной CHAR расширен до
CHAR[(Z[CHAR| BYTE])]
где также является максимальной длиной переменной. CHAR и BYTE используются для указания на то, что будет измеряться в символах или байтах соответственно (по умолчанию применяется CHAR). Максималь­ная длина, однако, по-прежнему составляет 32 767 байт. Предположим, что база данных использует набор символов UTF8, который содержит
многобайтовые символы переменной длины. В UTF8 максимальная дли­на символа равна 3 байтам. Это означает, что переменная, объявленная как CHAR(300 BYTE), сможет содержать максимум 100 символов (в слу­чае необходимости дополненных пробелами) в зависимости от реально используемых символов.
LONG В отличие от типа LONG, используемого в базах данных и позво­ляющего хранить до 2 Гбайт информации, при помощи типа LONG PL/SQL можно сохранять последовательности символов переменной длины, максимальный размер которых равен 32 760 байт. Переменные LONG очень похожи на переменные VARCHAR2. Если в поле столбца
LONG базы данных содержится более 32 760 байт информации, помес­тить эту информацию в PL/SQL-переменную LONG нельзя. Однако мак­симальная длина PL/SQL-переменной LONG меньше, чем поле LONG базы данных, поэтому PL/SQL-переменная LONG может быть помещена
в столбец LONG базы данных безо всяких ограничений.
NCHAR и NVARCHAR2 В Огас1е8 предусмотрены два дополнительных типа. Это символьные типы M.S(National Language Support - поддержка национальных языков): NCHAR и NVARCHAR2. Они служат для хранения строк символов с применением набора символов, отличного от того, ко­торый используется в языке программирования PL/SQL. Такой набор называется национальным набором символов (national character set). Переменные типов NCHAR и NVARCHAR2 описываются и использу­ются точно так же, как переменные типов CHAR и VARCHAR2. Однако длина может меняться в зависимости от применяемого национального
набора символов. Если в таком наборе размер символов фиксирован, дли­на указывается в символах. Если же их размер может меняться, длина ука­зывается в байтах.

Внимание
В Oracle длина NCHAR и NVARCHAR2 всегда определяется в символах.
Более подробно о типах NCHAR, NVARCHAR2 и о NLS рассказывает­ся в справочном руководстве "Server SQL Reference".


 









jAntivirus