BLOB to LONG RAW (без использования JAVA)
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
MARINA KRAMARENKO Участник
Вступление в Клуб: 26.08.2013
|
Ср Окт 16, 2013 16:30  BLOB to LONG RAW (без использования JAVA) |
|
Полезность: Нет оценки
|
Есть ли возможность преобразовать данные типа BLOB в LONG RAW, не прибегая к помощи JAVA?
Может получилось у кого-нибудь? Помогите разобраться...
Спасибо. |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Чт Окт 17, 2013 08:21  Re: BLOB to LONG RAW (без использования JAVA) |
|
Полезность: Нет оценки
|
MARINA KRAMARENKO пишет: | Есть ли возможность преобразовать данные типа BLOB в LONG RAW, не прибегая к помощи JAVA?
Может получилось у кого-нибудь? Помогите разобраться...
Спасибо. |
У нас на джаве!  |
|
 |
MARINA KRAMARENKO Участник
Вступление в Клуб: 26.08.2013
|
Чт Окт 17, 2013 09:11  Re: BLOB to LONG RAW (без использования JAVA) |
|
Полезность: Нет оценки
|
maestro пишет: | У нас на джаве!  |
А можно примерчик?  |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Чт Окт 17, 2013 09:20  Re: BLOB to LONG RAW (без использования JAVA) |
|
Полезность: Нет оценки
|
MARINA KRAMARENKO пишет: | BLOB в LONG RAW |
Нафига?!
LONG RAW куда-нить преобразовать, я ещё понимаю...
Вот примерчик, может, поможет.
Код: |
lMax constant pls_integer := 4000;
type arr_str table of varchar2(32767) index by binary_integer;
function TextView( p_name varchar2
) return arr_str is
iCursor integer := dbms_sql.open_cursor;
longValue long;
iBufLen pls_integer;
a arr_str;
iSize integer;
begin
iSize := 0;
for ( select x(x.text_length :text_length)
in user_views%rowtype
where x.view_name = p_name
) loop
iSize := x.text_length;
end loop;
if iSize = 0 then
pragma error('view '||p_name||' not found');
end if;
dbms_sql.parse( iCursor
, 'select text from user_views where view_name = :bv'
, dbms_sql.native
);
dbms_sql.bind_variable( iCursor, ':bv', p_name );
dbms_sql.define_column_long(iCursor, 1);
dbms_sql.execute(iCursor);
if dbms_sql.fetch_rows(iCursor) > 0 then
for i in 1 .. ceil(iSize / lMax) loop
dbms_sql.column_value_long( c == iCursor
, position == 1
, length == lMax
, offset == (i-1)*lMax
, value == longValue
, value_length == iBufLen
);
a(a.count + 1) := longValue;
end loop;
end if;
if a.count = 0 then
pragma error('view '||p_name||' not found');
end if;
a(1) := 'create or replace view '||p_name||' as '||a(1);
return a;
end; |
|
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Чт Окт 17, 2013 09:31  Re: BLOB to LONG RAW (без использования JAVA) |
|
Полезность: Нет оценки
|
MARINA KRAMARENKO пишет: | maestro пишет: | У нас на джаве!  |
А можно примерчик?  |
Код: |
create or replace and compile java source named "NomRepView" as
import oracle.jdbc.OracleDriver;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class NomRepView {
public static void CopyBlobToRep(Blob v_blob, int v_job, int v_pos) throws SQLException,IOException {
Connection con = null;
PreparedStatement pst = null;
try {
con = new OracleDriver().defaultConnection();
pst = con.prepareStatement("UPDATE ORSA_JOBS_OUT SET BODY = ? WHERE job = ? and pos = ?");
InputStream in = null;
try {
in = new BufferedInputStream(v_blob.getBinaryStream());
pst.setBinaryStream(1, in, (int) v_blob.length());
pst.setInt(2, v_job);
pst.setInt(3, v_pos);
pst.execute();
} finally {
if (in != null) {in.close();}
}
} finally {
if (pst != null) {pst.close();}
if (con != null) {con.close();}
}
}
}
|
|
|
 |
MARINA KRAMARENKO Участник
Вступление в Клуб: 26.08.2013
|
Пн Окт 21, 2013 15:27   |
|
Полезность: Нет оценки
|
Спасибо, все получилось!!!  |
|
 |
kykyRyky Участник
Вступление в Клуб: 27.08.2013
|
Чт Окт 24, 2013 08:28   |
|
Полезность: Нет оценки
|
Марина, поделитесь пожалуйста, что и как вы сделали. Похоже у нас схожие задачи, у меня сейчас в файлы сохранены блобы, которые надо загрузить в LONG RAW. |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пт Окт 25, 2013 12:38   |
|
Полезность: Нет оценки
|
kykyRyky пишет: | Марина, поделитесь пожалуйста, что и как вы сделали. Похоже у нас схожие задачи, у меня сейчас в файлы сохранены блобы, которые надо загрузить в LONG RAW. |
Oracle, например, везде пишет, что тип LONG RAW - это устаревший тип и его поддерживают постольку, поскольку.
Объясните, зачем он вам ? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Пт Окт 25, 2013 14:14   |
|
Полезность: Нет оценки
|
Random пишет: | kykyRyky пишет: | Марина, поделитесь пожалуйста, что и как вы сделали. Похоже у нас схожие задачи, у меня сейчас в файлы сохранены блобы, которые надо загрузить в LONG RAW. |
Oracle, например, везде пишет, что тип LONG RAW - это устаревший тип и его поддерживают постольку, поскольку.
Объясните, зачем он вам ? |
Тяжелое наследие царского режима - схемы на Oracle8, например.
По теме - если непременно нужно сделать на чистом PL/SQL, то надо резать на куски по 32K
Код: | utl_raw.cast_to_varchar2 |
ну а потом куски склеивать их вместе
|
|
 |
MARINA KRAMARENKO Участник
Вступление в Клуб: 26.08.2013
|
Пн Окт 28, 2013 09:16   |
|
Полезность: Нет оценки
|
kykyRyky пишет: | Марина, поделитесь пожалуйста, что и как вы сделали. Похоже у нас схожие задачи, у меня сейчас в файлы сохранены блобы, которые надо загрузить в LONG RAW. |
Легко! В архиве - хранилище для создания простой операции в ИБСО и скрипт jvs, который нужно создать в Toad или SQLNav.
Если будут вопросы и/или предложения по улучшению, обращайтесь! |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|