›  ›  ›  › Тип данных VARCHAR2 в PL/SQL Oracle

Тип данных VARCHAR2 в PL/SQL Oracle

В переменных типа VARCHAR2 хранятся символьные строки переменной длины. При объявлении такой строки для нее определяется максимальная длина в диапазоне от 1 до 32 767 байт. Максимальная длина может задаваться в байтах или символах, но в любом случае компилятор определяет ее в байтах.

Синтаксис объявления VARCHAR2

имя_переменной VARCHAR2 (макс_длина [CHAR | BYTE]);

Здесь имя_переменной — имя объявляемой переменной, макс_длина — ее максимальная длина, а CHAR и BYTE — аргументы, указывающие, что максимальная длина выражается в символах или в байтах соответственно.

Если максимальная длина строковой переменной VARCHAR2 задается в символах (спецификатор CHAR), то ее реальная длина в байтах вычисляется на основе максимального количества байтов, используемых для представления одного символа.

Спецификатор длины CHAR используется в основном при работе с многобайтовыми наборами символов — такими, как UTF-8.

Если в объявлении переменной VARCHAR2 опустить спецификатор CHAR или BYTE, тогда заданное значение длины будет интерпретировано в байтах или символах в зависимости от параметра инициализации NLS_LENGTH_SEMANTICS. Текущее значение можно узнать, обратившись с запросом к NLS_SESSION_PARAMETERS.

Несколько примеров объявления строк типа VARCHAR2:

DECLARE
   small_string VARCHAR2(4);
   line_of_text VARCHAR2(2000);
   feature_name VARCHAR2(100 BYTE); -- Строка длиной 100 байт
   emp_name VARCHAR2(30 CHAR); ------- Строка длиной 30 символов

Итак, максимальная длина переменной типа VARCHAR2 в PL/SQL составляет 32 767 байт. Это ограничение действует независимо от того, определяется ли длина строки в байтах или символах. Однако следует учитывать, что SQL поддерживает этот максимум только в том случае, если параметру инициализации MAX_SQL_STRING_SIZE задано значение EXTENDED; по умолчанию используется значение STANDARD.

Если вам понадобится работать со строками длиной более 4000 байт, рассмотрите возможность их хранения в столбцах типа CLOB.

Метки: , , , .

Записи по теме

Добавить комментарий

Ваш адрес email не будет опубликован.