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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в файл на клиенте. 
:(
    Опции темы
LSD
Дата 12.11.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Иногда возникает необходимость записать данные в файл, а возможностей UTL_FILE нехватает. В таком случае можно воспользоваться хранимыми процедурами на Java.

1. Создаем Java class
Код
create or replace and compile java source named write_to_client as
import java.io.*;
import java.sql.*;

public class NetWrite
{
  public static void writeToFile(String file, Blob data) throws Exception
  {
    FileOutputStream out = new FileOutputStream(file);
    InputStream in = data.getBinaryStream();
    int read;
    byte[] buffer = new byte[16 * 1024];
    while((read = in.read(buffer)) != -1)
      out.write(buffer, 0, read);
    in.close();
    out.close();
  }
}
/

2. Создаем процедуру на PL/SQL
Код
create or replace procedure WRITE_CLIENT(file varchar2, data blob) as
language java name 'NetWrite.writeToFile(java.lang.String, java.sql.Blob)';

3. Выдаем разрешения на чтение и запись любого файла (при желании, можно ограничить процедуру записью, лишь в некоторые файлы/директории)
Код
begin
  sys.dbms_java.grant_permission('PUBLIC', 'java.io.FilePermission', '<<ALL FILES>>', 'read,write');
end;
/

4. Проверяем
Код
declare 
  bin_data blob;
begin
  select photo_data into bin_data from photos where id = 'D490AA09AEF3424A9AEEFAAC638B283E';
  write_client('C:\TEMP\foto.jpeg', bin_data);
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   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0576 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


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

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