Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Вт Ноя 15, 2016 17:58  Нужен длинный текст в представлении PL_PLUS |
|
Полезность: Нет оценки
|
Возникла проблема - пишу представление PL_PLUS, оказалось что длина поля с типом Строка ограничена где-то около 4000 символов.
А можно ли каким-либо образом создать в представлении PL_PLUS поле с типом Текст (дабы это ограничение по длине обойти)?
Автоматом только с типом Строка генерится. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Ноя 16, 2016 09:34   |
|
Полезность: Нет оценки
|
Это ограничение Oracle - varchar2 4000. |
|
 |
OlegFB Участник - экстремал
Вступление в Клуб: 11.07.2007
|
Ср Ноя 16, 2016 12:51  Re: Нужен длинный текст в представлении PL_PLUS |
|
Полезность: Нет оценки
|
bvo пишет: | Возникла проблема - пишу представление PL_PLUS, оказалось что длина поля с типом Строка ограничена где-то около 4000 символов.
А можно ли каким-либо образом создать в представлении PL_PLUS поле с типом Текст (дабы это ограничение по длине обойти)?
Автоматом только с типом Строка генерится. |
используйте поле типа Текст (Текстовое) |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Чт Ноя 17, 2016 06:25   |
|
Полезность: Нет оценки
|
Volod пишет: | Это ограничение Oracle - varchar2 4000. |
замечу, что уже пора писать "Ограничение Oracle 11g", так как начиная с 12c, максимальный размер строки в SQL - 32к |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Чт Ноя 17, 2016 06:26  Re: Нужен длинный текст в представлении PL_PLUS |
|
Полезность: Нет оценки
|
bvo пишет: | Возникла проблема - пишу представление PL_PLUS, оказалось что длина поля с типом Строка ограничена где-то около 4000 символов.
А можно ли каким-либо образом создать в представлении PL_PLUS поле с типом Текст (дабы это ограничение по длине обойти)?
Автоматом только с типом Строка генерится. |
Сделайте массив строк. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Ноя 17, 2016 09:18   |
|
Полезность: Нет оценки
|
32767 bytes or characters if MAX_STRING_SIZE = EXTENDED
4000 bytes or characters if MAX_STRING_SIZE = STANDARD |
|
 |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Чт Ноя 17, 2016 10:44  Re: Нужен длинный текст в представлении PL_PLUS |
|
Полезность: Нет оценки
|
OlegFB пишет: |
используйте поле типа Текст (Текстовое) |
Так я и спрашиваю - как его туда подсунуть?
Там автоматом Строка ставится, и изменить не дает.
Поле Текст ставится, если в представление PL_PLUS выводить реквизит с типом Текст, а у меня туда выводится значение функции, и хотя функция возвращает varchar2(20000) - все равно ставится Строка. Сейчас попробую вернуть varchar2(32000) - вдруг поможет |
|
 |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Чт Ноя 17, 2016 10:45  Re: Нужен длинный текст в представлении PL_PLUS |
|
Полезность: Нет оценки
|
Эмиралька пишет: |
Сделайте массив строк. |
Это понятно, но в данном случае пока неприменимо, не хочется все это во временную таблицу складывать |
|
 |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Чт Ноя 17, 2016 10:50   |
|
Полезность: Нет оценки
|
return varchar2(32000) - не помогло, все равно ставится тип Строка |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Ноя 17, 2016 10:51   |
|
Полезность: Нет оценки
|
Что возвращает select ваша_функция from dual? |
|
 |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Чт Ноя 17, 2016 11:44   |
|
Полезность: Нет оценки
|
Volod пишет: | Что возвращает select ваша_функция from dual? |
Спасибо за идею.
Если переменная короткая, возвращается текстовое значение, а если длина больше 4000 - функция плюется, независимо от того, что стоит varchar2(32000). Пошла разбираться, почему плюется. |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Чт Ноя 17, 2016 11:49   |
|
Полезность: Нет оценки
|
Вся информация уже есть в треде. |
|
 |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Чт Ноя 17, 2016 12:17   |
|
Полезность: Нет оценки
|
Оказалось, что когда ЦФТ компилирует пакет, она делает
из функции
Цитата: | function get_after_value (<параметры>) return varchar2(32000)
is
cValue varchar2(32000);
begin
|
вот такую функцию, а внутренние переменные обрабатывает корректно
Цитата: | --# 355,1
function GET_AFTER_VALUE(<параметры>) return varchar2 is
--# 360,1
CVALUE varchar2(32000);
plp$CASE$1 VARCHAR2(1000);
begin
|
|
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Ноя 17, 2016 14:39   |
|
Полезность: Нет оценки
|
как в итоге решили проблему ?
 |
|
 |
bvo Участник со стажем
Вступление в Клуб: 06.12.2011
|
Чт Ноя 17, 2016 15:06   |
|
Полезность: Нет оценки
|
vtar пишет: | как в итоге решили проблему ?
|
Таких строчек мало, вернула из функции "слишком длинное значение - по данному клиенту смотрите стандартным способом" Зато ошибки нет. |
|
 |
|