Типы данных: в документации. Для NVARCHAR2
написано:
Строка символов Unicode переменной длины с максимальной длиной символов size. Вы должны указать размер для NVARCHAR2
. Количество байтов может быть в два раза больше size для кодировки AL16UTF16 и в три раза больше size для кодировки UTF8. Максимальный размер определяется определением национального набора символов с верхним пределом:
32767 байт, если MAX_STRING_SIZE = EXTENDED
4000 байт, если MAX_STRING_SIZE = STANDARD
Обратитесь к расширенным типам данных для получения дополнительной информации о параметре инициализации MAX_STRING_SIZE
.
Так что 3000 символов — это не предел; но с многобайтовыми символами вы достигаете 4000 байтов. (Предполагая, что вы используете 12cR2 со стандартной длиной строки или любую предыдущую версию).
Это предел в контексте SQL, который у вас есть с показанным вами запросом.
В контексте PL/SQL все немного отличается. Переменная, которую вы определяете для выбора результата функции в, должна быть достаточно большой для генерируемого значения, а размер, который вы ей задаете, может быть не совсем таким, как вы ожидаете, в зависимости от вашего значения по умолчанию семантика длины. Вы можете указать более явно, скажем, любой из них:
declare
variable1 nvarchar2(4000 char);
variable2 nvarchar2(4000 byte);
...
Разница между ними на самом деле заключается в том, что любая из этих переменных может принимать 4000 однобайтовых символов, но первая также может принимать до 4000 многобайтовых символов (вплоть до общего жесткого ограничения в 32767 байт), тогда как вторая по-прежнему будет ошибаться с менее чем 4000 многобайтовых символов, если общее количество байтов превышает 4000.
Вам также необходимо, чтобы все переменные, определенные внутри вашей функции, были достаточно большими, чтобы вместить возвращаемое вами значение, включая любые многобайтовые символы.
person
Alex Poole
schedule
26.02.2018
NCLOB
? Это может соответствовать или не соответствовать вашим потребностям - это зависит от того, как вы используете значения функции, например, вы не сможете группировать или упорядочивать поNCLOB
, но это позволит вам практически неограниченную длину. - person mathguy   schedule 26.02.2018