Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как послать данные в тип long Oracle  (Прочитано 7918 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
alex_bird
Гость
« : 19-03-2009 09:14 » new

Смысл такой: Есть таблица со столбцом content типа long. В яве я формирую строку, длина которой очень высока и пытаюсь ее прибить к запросу параметром:
Код:
PreparedStatement stat = conn.prepareStatement("update web_pogoda set content = ?");
stat.setString(1, string);
но получаю исключение - setString может обрабатывать только строки короче 32766 символов
а как тогда отправлять данные в long оракла, если в ближайшее время я не собираюсь мигрировать на CLOB?
Записан
alex_bird
Гость
« Ответ #1 : 19-03-2009 11:30 » 

Нашел метод setBytes, но теперь видимо проблема в параметре NLS_LANG теперь получаю исключение ORA-01461 , нельзя вставлять long во что либо кроме long. Но ведь именно в long я и выставляю.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 19-03-2009 12:37 » 

В хелпе по типу LONG:
Цитата
Do not create tables with LONG columns. Use LOB columns (CLOB, NCLOB, BLOB) instead. LONG columns are supported only for backward compatibility

С лонгом не работал, но может когда биндятся переменные лонг нужно биндить именно как лонг?
может надо кавычки в запросе указать ? => '?'
Записан

Удачного всем кодинга! -=x[PooH]x=-
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 19-03-2009 19:17 » 

LONG - такой же текстовый тип, как и VARCHAR2. НО, SQL-запрос не может содержать текстовые константы длиннее 4000 байт. По это причине лучше прислушаться к совету Oracle и перевести столбец в CLOB.

Цитата из документации "Oracle Database SQL Reference".
Цитата
LONG Character data of variable length up to 2 gigabytes, or 231 -1
bytes. Provided for backward compatibility.

Цитата
LONG Datatype

LONG columns store variable-length character strings containing up to 2 gigabytes -1,
or 2^31-1 bytes. LONG columns have many of the characteristics of VARCHAR2 columns.
You can use LONG columns to store long text strings. The length of LONG values may
be limited by the memory available on your computer. LONG literals are formed as
described for "Text Literals" on page 2-45.


Do not create tables with LONG columns. Use LOB columns (CLOB, NCLOB, BLOB)
instead. LONG columns are supported only for backward compatibility.


Oracle also recommends that you convert existing LONG columns to LOB columns.
LOB columns are subject to far fewer restrictions than LONG columns. Further, LOB
functionality is enhanced in every release, whereas LONG functionality has been static
for several releases. See the modify_col_properties clause of ALTER TABLE on
page 12-2 and TO_LOB on page 5-196 for more information on converting LONG
columns to LOB.

........

« Последнее редактирование: 19-03-2009 19:20 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines