Тип данных 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.
Метки: Oracle, VARCHAR2, Строки, Тип данных.