Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> BLOB в Oracle9i, Использование BLOB в Web Application 
:(
    Опции темы
Anet
Дата 8.1.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет







Здравствуйте, расскажите пожалуйста, как показать на экране содержимое документа *.doc, который хранится в поле типа BLOB в БД. Желательно использование PL/SQL.
Заранее благодарна.

PM MAIL ICQ   Вверх
igon
Дата 9.1.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Под *.doc подразумевается документ Microsoft Word?
ИМХО, средствами Oracle посмотреть его не удасться (я ориентируюсь на версию 9.0.1).
Но можно:
1. Сформировать файл в формате MSWord. Как - смотри в документации на Oracle
Oracle COM Automation Feature Developer's Guide
Раздел 4 Oracle COM Automation PL/SQL Demos. Возможно, придется "подправлять" демонстрационные пакеты.
2. При помощи приложения, например, на Java, через JDBC считать нужный BLOB и записать его в файл с расширением .doc
Сформированный в обоих вариантах файл смотреть в MSWord.
К сожалению, готовыми примерами не располагаю smile

И еще: Задача существенно упростится, если ты опишешь, каким способом файл MSWord попадает в BLOB Oracle - извлечение его будет практически зеркальным отражением: Insert-Select, InputStream-OutputStream и т.д.


--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 9.1.2005, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Спасибо. Я обязательно попробую.

Добавлено @ 19:25


Почему при загрузки в BLOB поле через HTML-тег <Textarea></Textarea> возможно отправить только 1558 символов русского текста?

PM MAIL ICQ   Вверх
LSD
Дата 9.1.2005, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



У меня есть пример полностью на PL/SQL как записать BLOB в файл, но вот как запустить Word я не знаю. Если интерестно могу выложить.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
igon
Дата 10.1.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Цитата
У меня есть пример полностью на PL/SQL как записать BLOB в файл, но вот как запустить Word я не знаю. Если интерестно могу выложить


Конечно, интересно - выкладывай smile

Цитата
Почему при загрузки в BLOB поле через HTML-тег <Textarea></Textarea> возможно отправить только 1558 символов русского текста?


HTML вообще не знает, что такое BLOB, так что вопрос о емкости Textarea - Web-программистам (в соседней ветке форума) smile



--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 10.1.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



Цитата
У меня есть пример полностью на PL/SQL как записать BLOB в файл, но вот как запустить Word я не знаю. Если интерестно могу выложить.




Было бы зодрово. Покажи, пожалуйста, код! smile


Добавлено @ 21:04


iqon, претворила в реальность ваши рекомендации! Работает, только данные в MSWORD записываются в 16-тиричном формате. Наверное надо кодировку сменить?

PM MAIL ICQ   Вверх
Anet
Дата 10.1.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет



уже записала в MSWORD по русски, т.е. просто добавила ...utl_raw.cast_to_varchar2(buffer)...
в нужном месте :-)

PM MAIL ICQ   Вверх
Guest
Дата 10.1.2005, 22:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered













подскажите, пожалуйста, как можно показать в WEB картинку из того же многострадального поля типа BLOB?

  Вверх
Гость_Anet
Дата 10.1.2005, 22:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ой, забыла зайти )
  Вверх
Anet
Дата 10.1.2005, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет




извините за путаницу. Забыла авторизироваться и не заметила.
повторяю вопрос:

Цитата
подскажите, пожалуйста, как можно показать в WEB картинку из того же многострадального поля типа BLOB?

PM MAIL ICQ   Вверх
igon
Дата 11.1.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Сохраняешь в файл с соответствующим расширением и в страничку вставляешь ссылку на этот файл


--------------------
Хотите поговорить об этом?
PM   Вверх
LSD
Дата 13.1.2005, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Извинясь за задержку, не мог найти пример. И похоже я ошибся, записать данные в файл на PL/SQL нельзя. Можно только считать.
Код

declare
 data blob;
 src_bfile BFILE := bfilename('DEST_DIR', 'data.bin');
 dest_offset integer := 1;
 src_offset integer := 1;
begin
 dbms_lob.fileopen(src_loc, dbms_lob.file_readonly);
 dbms_lob.createtemporary(data , true , dbms_lob.call);
 dbms_lob.loadblobfromfile(data, src_loc , dbms_lob.lobmaxsize, dest_pos, src_pos);
 .....
 dbms_lob.fileclose(src_loc);
end;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Anet
Дата 16.1.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Подскажите пожалуйста, как правильно написать команду alter table... ,чтобы переместить таблицу и все ее данные из табличного пространства SYSTEM в табличное пространство USERS(в таблице есть LOB-поля, хранящиеся в tablespace SYSTEM их тоже надо отправить в tablespace USERS)?

Добавлено @ 20:10


LSD, спасибо за скрипт.


Это сообщение отредактировал(а) Anet - 16.1.2005, 20:08
PM MAIL ICQ   Вверх
igon
Дата 17.1.2005, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



1. Нужно установить TableSpace по умолчанию в Users (у тебя он стоит в System), иначе в будущем придется все вновь создаваемые таблицы (если при создании явно не указывается TableSpace) выковыривать из System.
Из-под USER Sys As DBA выполняешь
Код

ALTER USER Anet DEFAULT TABLESPACE Users

2. Из-под USER Anet выполняешь
Код

Create Table myTable As select * from system.myTable

3. Из-под USER Sys As DBA выполняешь DROP исходной таблицы

Возможный подводный камень - скопируются ли LOB'ы? Под рукой нет похожей таблицы, поэтому не тестировал.
Если содержимое базы ценное - предварительно сделай полный dump smile


--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 17.1.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Т.е. , если код создания таблицы ранее был:
Цитата

CREATE TABLE myTable
(<some fields>)
STORAGE (...)
TABLESPACE SYSTEM...


то после

Цитата

ALTER USER Anet DEFAULT TABLESPACE Users
Create Table myTable As select * from system.myTable


будет

Цитата

CREATE TABLE myTable
(<some fields>)
STORAGE (...)
TABLESPACE USERS...

Правильно я поняла твой совет?
Конечно, слово "код" или "скрипт" не совсем подходят, но...


Это сообщение отредактировал(а) Anet - 17.1.2005, 10:45
PM MAIL ICQ   Вверх
igon
Дата 17.1.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Да,
Код

ALTER USER Anet DEFAULT TABLESPACE Users
Create Table myTable As select * from system.myTable
скопирует таблицу myTable в TABLESPACE Users


--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 19.1.2005, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Что-то я подзабыла, как можно создать пакет OWA_CONTENT? По моему, он должен находиться в схеме SYS. В документации по ORACLE9i он упоминается только при описании создания DAD. Но мне OWA_CONTENT нужен для других целей.

PM MAIL ICQ   Вверх
igon
Дата 20.1.2005, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21





--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 20.1.2005, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Большое спасибо, хороший link!
Вот, только,
Цитата

http://local_host:local_port/admin_/gateway.htm

(для загрузки страницы редактирования DAD) не работает.
Почему? Этот сбой произошел давно, я не обращалась к настройкам с тех пор, как настроила один DAD.


Это сообщение отредактировал(а) Anet - 20.1.2005, 20:18
PM MAIL ICQ   Вверх
Anet
Дата 26.1.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Есть некоторая таблица с полем varchar2. Как определить кодировку данных в этом поле?
И еще, подскажите, пожалуйста, есть ли функция,определяющая, в какой кодировке данные будут переданы на
ORACLE SERVER c Web страницы?

PM MAIL ICQ   Вверх
igon
Дата 27.1.2005, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



Посмотри "Java: Русские буквы и не только..."
http://people.comita.spb.ru/users/sergeya/java/ruschars.html
ИМХО, исчерпывающий материал по вопросам кодировок. Для меня эта статья практически настольная smile


--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 27.1.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Спасибо, а что такое ИМХО?
Вопрос.
Есть пакет:
Код

PACKAGE MY_UTL
 IS
type vc is table of varchar2(500)
   index by binary_integer;
type rf is ref cursor;

   function showlistitem (
       fieldname in varchar2,
       cvalue in MY_UTL.vc,
       clabel in MY_UTL.vc,
       cdefault in varchar2:=null,
       requirement in varchar2:='YES',
       cattributes in varchar2:=null
   )
       return varchar2;
...

Как передать в переменную cvalue данные? никак не могу найти у себя в документации smile



Это сообщение отредактировал(а) Anet - 27.1.2005, 20:40
PM MAIL ICQ   Вверх
igon
Дата 28.1.2005, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



1. ИМХО - от IMHO In my humble opinion
2.
Цитата
PL/SQL User's Guide and Reference
  5
  PL/SQL Collections and Records
Assigning Collection Elements
You can assign the value of an expression to a specific element in a collection using the syntax:

collection_name(subscript) := expression;

where expression yields a value of the type specified for elements in the collection type definition. If subscript is null or not convertible to an integer, PL/SQL raises the predefined exception VALUE_ERROR. If the subscript refers to an uninitialized element, PL/SQL raises SUBSCRIPT_BEYOND_COUNT. If the collection is atomically null, PL/SQL raises COLLECTION_IS_NULL. Some examples follow:

DECLARE
  TYPE NumList IS TABLE OF INTEGER;
  nums NumList;
BEGIN
  /* Assume execution continues despite the raised exceptions. */
  nums(1) := 10;  -- raises COLLECTION_IS_NULL
  nums := NumList(10,20,30); --Вот это ключевая строчка
  nums(1) := ASCII('A');
  nums(2) := 10 * nums(1);
  nums('B') := 15; -- raises VALUE_ERROR
  nums(4) := 40;  -- raises SUBSCRIPT_BEYOND_COUNT
END;





--------------------
Хотите поговорить об этом?
PM   Вверх
Anet
Дата 29.1.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Спасибо за помощь!
Просмотрю полученную информацию.

PM MAIL ICQ   Вверх
Anet
Дата 10.2.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Снова, здравствуйте!
Вопрос, наверно, смешной, но, возможно ли передать в виде фактического параметра таблицу, например, в курсор с параметрами? Если, нет, то как можно обойти проблему реализации многих процедур, структура которых однотипна, а разница лишь в том, что в курсоре используется таблица с другим именем?

PM MAIL ICQ   Вверх
LSD
Дата 10.2.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



В Dynamic SQL можно передать все что хочешь. Например:
Код
  PROCEDURE print_table (tab_name VARCHAR2) IS
     TYPE RefCurTyp IS REF CURSOR;
     cv RefCurTyp;
     p  Person;
     h  Hobbies;
  BEGIN
     OPEN cv FOR 'SELECT pers, hobbs FROM ' || tab_name;
     LOOP
        FETCH cv INTO p, h;
        EXIT WHEN cv%NOTFOUND;
        -- print attributes of 'p' and elements of 'h'
     END LOOP;
     CLOSE cv;
  END;

Добавлено @ 22:45
P.S. А почему вы пишите синим цветом? smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Anet
Дата 12.2.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 8.1.2005
Где: Алтайский край

Репутация: нет
Всего: нет





Спасибо, я попробую. Сейчас очень много надо сделать, поэтому о результате сообщу попозже.


А что касается цвета моих сообщений, то это ......... потому, что синий мой любимый цвет, он читабелен и вписывается в цветовую гамму Vingrad-а. smile

Добавлено @ 20:49

Хотя, фиолетовый...
Объясните пожалуйста, почему возникает ошибка:
PLS-0036: wrong number or types of arguments in call to 'SHOWLISTITEM'?
есть вызов
Код

tt:=my_utl.showlistitem(fieldname =>'myselect',
                   cvalue => tvalue,
                   clabel => tlabel,
                   crequirement => 'yes');

где функция (заполнение tvalue и tlabel происходит через Bulk Collect Into)
Код

PACKAGE MY_UTL
 IS
type vc is table of varchar2(500)
   index by binary_integer;

   function showlistitem (
       fieldname in varchar2,
       cvalue in my_utl.vc,
       clabel in my_utl.vc,
       cdefault in varchar2:=null,
       requirement in varchar2:='YES',
       cattributes in varchar2:=null
   )
       return varchar2



PM MAIL ICQ   Вверх
igon
Дата 13.2.2005, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 7
Всего: 21



А у tvalue и tlabel перед вызовом функции тип какой? My_Utl.vc?
Покажи ту часть, где объявляются и заполняются tvalue и tlabel.


--------------------
Хотите поговорить об этом?
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.