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

Как просмотреть CLOB-поле ?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеЧт Май 08, 2014 07:02   Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Добрый день.
Подскажите - не знаю как сделать...
Есть реквизит у класса - типа [CLOB type].
Вывел это поле в представление - отображает значение '<***>'.
При попытке просмотреть содержимое поля (двойной клик мышкой) вылетает форма с шапкой 'Просмотр OLE' и иконкой с надписью 'clob.clob'.
При двойном клике на иконке 'clob.clob' - запускается Notepad и содержимое поля можно просмотреть (выгружается в темповый файл, который потом и открывается Notepad-ом).
Теперь вопросы, собс-но:
1) Как избавиться от лишнего клика мышкой по иконке 'clob.clob' ?
Т.е. при первом клике на колонке со значением '<***>' чтобы Notepad уже и запускался.
2) Можно ли сделать редактирование CLOB-поля?
Т.е. вот Notepd открыл в темповом файле содержимое CLOB-поля. Если подредактировать и сохранить содержимое, то редактируется всего лишь темповый файл. А дальше автоматом чтоб темповый файлик в CLOB-поле грузился - как?

Пояснение: CLOB-поле заполняю самостоятельно в операции - просто текст.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Май 08, 2014 13:16   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Damir пишет:

Теперь вопросы, собс-но:
1) Как избавиться от лишнего клика мышкой по иконке 'clob.clob' ?
Т.е. при первом клике на колонке со значением '<***>' чтобы Notepad уже и запускался.

Да тебя ж пришибут за это. Сразу, как только случайно ткнут в поле с данными размером в гигабайт.
Damir пишет:
2) Можно ли сделать редактирование CLOB-поля?
Т.е. вот Notepd открыл в темповом файле содержимое CLOB-поля. Если подредактировать и сохранить содержимое, то редактируется всего лишь темповый файл. А дальше автоматом чтоб темповый файлик в CLOB-поле грузился - как?

Пояснение: CLOB-поле заполняю самостоятельно в операции - просто текст.


Всё, что могу посоветовать - не открывать данные с помощью Notepad кликом по полю ***.
Лучше всего делать это в операции редактирования - и посмотреть, и отредактировать.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеПн Май 12, 2014 05:47   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Здравствуй, Random-чик, дорогой!

Random пишет:
Damir пишет:

1) Как избавиться от лишнего клика мышкой по иконке 'clob.clob' ?
Т.е. при первом клике на колонке со значением '<***>' чтобы Notepad уже и запускался.

Да тебя ж пришибут за это. Сразу, как только случайно ткнут в поле с данными размером в гигабайт.

Просмотр больших Clob-ов - это отдельный вопрос.
Например, свше 100К можно выдавать дополнительный вопрос: "Объем данных превышает ХХХ Килобайт, всё равно открывать?".
Кстати, нынешний лишний клик ни от чего не спасает - он не дает информации о размере данных в CLOB-e и если их много - все равно подвиснет при открытии.
Random пишет:
2)...

На нашей схеме нет примеров редатирования CLOB-ов в операции.
Будет время - попробую такое протестить (сегодня-завтра).
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеПн Май 12, 2014 11:45   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Damir пишет:
2) Можно ли сделать редактирование CLOB-поля?
Т.е. вот Notepd открыл в темповом файле содержимое CLOB-поля. Если подредактировать и сохранить содержимое, то редактируется всего лишь темповый файл. А дальше автоматом чтоб темповый файлик в CLOB-поле грузился - как?

Пояснение: CLOB-поле заполняю самостоятельно в операции - просто текст.


Всё, что могу посоветовать - не открывать данные с помощью Notepad кликом по полю ***.
Лучше всего делать это в операции редактирования - и посмотреть, и отредактировать.

Попробовал сделать в операции - я в шоке. И сохранение отредактированных данных не получилось сделать.
Может, чего не правильно делаю....
Народ, есть пример работы с блобами?
В идеале - в учебник ABC примерчик поместить.
Итак, ТБП содержит поле типа [CLOB type] - это поле я заполняю программно обычным текстом.
В операции 'Изменить' этого ТБП завел параметр P_clob, значение по умолчанию - привязал к соответствующему полю ТБП.
Открываю форму в Навигаторе - в поле ввода текста, где я ожидал увидеть содержимое CLOB-поля, красуется иконка 'clob.clob'.
По двойному щелчку по 'clob.clob' - вылетает окошко с еще одной иконкой 'clob.clob' (для тех, кто не понял) - ну и потом опять запускается Notepad с темповым файликом, который после редактирования назад в поле не перезаливается.
Confused
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Май 13, 2014 05:32   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Damir пишет:


см. операцию REPS_COPYFILES.SLIB процедуры file2blob и blob2file

Аналог Notepad на ЭФ операции - поле MEMO.

Кстати, а нафига тебе вообще BLOB-CLOB ?
Не проще сделать массив из строк?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Май 13, 2014 05:36   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
Просмотр больших Clob-ов - это отдельный вопрос.
Например, свше 100К можно выдавать дополнительный вопрос: "Объем данных превышает ХХХ Килобайт, всё равно открывать?".

Реализаций много. В данном случае выбрана такая.
Damir пишет:
Кстати, нынешний лишний клик ни от чего не спасает - он не дает информации о размере данных в CLOB-e и если их много - все равно подвиснет при открытии.

Зато спасает от случайного промаха мышкой.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеВт Май 13, 2014 05:47   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Random пишет:
Damir пишет:

см. операцию REPS_COPYFILES.SLIB процедуры file2blob и blob2file
Аналог Notepad на ЭФ операции - поле MEMO.

Ну вот нет на нашей схеме такой операции.
Народ, это же не что-то сверхсекретное - речь идет об элементарном примере работы с CLOB-ами в 'системе'.
Ну положите уже этот пример в учебник ABC. Или подскажите, где на оф.сайте можно выкачать пример этой операции.
Поле MEMO - у нас в системе вместо отображения текста выдает ИКОНКУ с подписью 'clob.clob' Shocked . Так и должно быть?


Random пишет:
Damir пишет:

Кстати, а нафига тебе вообще BLOB-CLOB ?
Не проще сделать массив из строк?

Сделать массив строк - не сложно.
Имхо, это решение из серии 'костыль'.
Дискутировать на эту тему не хочу. Думаю, Вы и сами все понимаете, учитывая Ваш опыт работы с Ораклом.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Май 13, 2014 08:27   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Damir пишет:
Random пишет:
Damir пишет:

см. операцию REPS_COPYFILES.SLIB процедуры file2blob и blob2file
Аналог Notepad на ЭФ операции - поле MEMO.

Ну вот нет на нашей схеме такой операции.

Код:

function Str2Blob(   p_str      varchar2 ) return blob is
   iOffset      integer := 1;
   rawBuffer   raw(32767);
   iCnt      integer;
   blobRet      blob;
begin
   rawBuffer := utl_raw.cast_to_raw(p_str);

   --   создаём BLOB
   dbms_lob.createtemporary(blobRet, true, dbms_lob.call);
   dbms_lob.write(blobRet, iCnt, iOffset, rawBuffer);

   return blobRet;
end;

function Blob2Str(p_blob blob) return varchar2 is
   iLen       integer;
   iSize       integer := 32000;
   iCount      integer;
   rawBuffer   raw(32767);
vStr varchar2(32767);
begin
   if p_blob is not null and dbms_lob.getlength(p_blob) != 0 then
      iLen := dbms_lob.getlength(p_blob);
      iCount := ceil(iLen/iSize);

      for i in 1 .. iCount loop
         dbms_lob.read(p_blob, iSize, to_number((i-1)*iSize + 1), rawBuffer);
         vStr := vStr || utl_raw.cast_to_varchar2(rawBuffer);
      end loop;
   end if;
return vStr;
end;

Damir пишет:
Поле MEMO - у нас в системе вместо отображения текста выдает ИКОНКУ с подписью 'clob.clob' Shocked . Так и должно быть?


V_STR - объявляешь на закладке "Параметры" с типом Строка32000
выводишь её на экранную форму. Можешь пожмякать на ней F5.
И работаешь как с очень длинной строкой.
Инициализацию и сохранение проводишь с помощью приведённых выше функций.

Damir пишет:
Сделать массив строк - не сложно.
Имхо, это решение из серии 'костыль'.
Дискутировать на эту тему не хочу. Думаю, Вы и сами все понимаете, учитывая Ваш опыт работы с Ораклом.

Эм... а на мой взгляд - вполне нормальное решение, учитывая ограничения Oracle 11g. Много чего так сделано - даже в dbms-пакетах.

Вот дождёмся 12g - глядишь, будет полегче Smile
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеВт Май 13, 2014 11:19   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Random пишет:

Эм... а на мой взгляд - вполне нормальное решение, учитывая ограничения Oracle 11g. Много чего так сделано - даже в dbms-пакетах.

Вот дождёмся 12g - глядишь, будет полегче Smile

А что там в этой части есть в 12g ?
О, вот: http://habrahabr.ru/post/186268/
Код:

- БД-шный тип VARCHAR расширили с 4000 char до 32000 char (как в PL/SQL)
- В запросах можно выбирать любые строки по номерам — select… TOP 10 или выбрать 3,5 и 10 строки

И, кстати, 12c а не 12g.

Будем делать ставки, через сколько лет ЦФТ смигрирует на 12с ?
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеВт Май 13, 2014 12:39   Re: Как просмотреть CLOB-поле ? Ответить с цитатой
Полезность: Нет оценки
Random пишет:

V_STR - объявляешь на закладке "Параметры" с типом Строка32000
выводишь её на экранную форму. Можешь пожмякать на ней F5.
И работаешь как с очень длинной строкой.
Инициализацию и сохранение проводишь с помощью приведённых выше функций.

Эх.... фсё вручную.
Ниасилили ядерщики технологию обратного залива файла в CLOB.
Пичаль. Smile

Спасибо.
Состояние дел понятно теперь - буду от этого отталкиваться.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

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