CftClub.ru
Клуб специалистов ЦФТ-Банк

Нужен длинный текст в представлении PL_PLUS
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 пишет:
как в итоге решили проблему ?

Таких строчек мало, вернула из функции "слишком длинное значение - по данному клиенту смотрите стандартным способом" Smile Зато ошибки нет.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru