Как просмотреть CLOB-поле ?
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 и если их много - все равно подвиснет при открытии.
На нашей схеме нет примеров редатирования 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 с темповым файликом, который после редактирования назад в поле не перезаливается.
 |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Май 13, 2014 05:32  Re: Как просмотреть CLOB-поле ? |
|
Полезность: Нет оценки
|
см. операцию 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 пишет: |
см. операцию REPS_COPYFILES.SLIB процедуры file2blob и blob2file
Аналог Notepad на ЭФ операции - поле MEMO.
|
Ну вот нет на нашей схеме такой операции.
Народ, это же не что-то сверхсекретное - речь идет об элементарном примере работы с CLOB-ами в 'системе'.
Ну положите уже этот пример в учебник ABC. Или подскажите, где на оф.сайте можно выкачать пример этой операции.
Поле MEMO - у нас в системе вместо отображения текста выдает ИКОНКУ с подписью 'clob.clob' . Так и должно быть?
Random пишет: |
Кстати, а нафига тебе вообще BLOB-CLOB ?
Не проще сделать массив из строк? |
Сделать массив строк - не сложно.
Имхо, это решение из серии 'костыль'.
Дискутировать на эту тему не хочу. Думаю, Вы и сами все понимаете, учитывая Ваш опыт работы с Ораклом. |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Вт Май 13, 2014 08:27  Re: Как просмотреть CLOB-поле ? |
|
Полезность: Нет оценки
|
Damir пишет: | Random пишет: |
см. операцию 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' . Так и должно быть? |
V_STR - объявляешь на закладке "Параметры" с типом Строка32000
выводишь её на экранную форму. Можешь пожмякать на ней F5.
И работаешь как с очень длинной строкой.
Инициализацию и сохранение проводишь с помощью приведённых выше функций.
Damir пишет: | Сделать массив строк - не сложно.
Имхо, это решение из серии 'костыль'.
Дискутировать на эту тему не хочу. Думаю, Вы и сами все понимаете, учитывая Ваш опыт работы с Ораклом. |
Эм... а на мой взгляд - вполне нормальное решение, учитывая ограничения Oracle 11g. Много чего так сделано - даже в dbms-пакетах.
Вот дождёмся 12g - глядишь, будет полегче  |
|
 |
Andry Участник - экстремал
Вступление в Клуб: 14.01.2009
|
Вт Май 13, 2014 11:19  Re: Как просмотреть CLOB-поле ? |
|
Полезность: Нет оценки
|
Random пишет: |
Эм... а на мой взгляд - вполне нормальное решение, учитывая ограничения Oracle 11g. Много чего так сделано - даже в dbms-пакетах.
Вот дождёмся 12g - глядишь, будет полегче  |
А что там в этой части есть в 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.
Пичаль.
Спасибо.
Состояние дел понятно теперь - буду от этого отталкиваться. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|