Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];

Вниз

BLOB -> Oracle   Найти похожие ветки 

 
rar   (2010-03-18 12:10) [0]

Вопрос к знатокам.

Проблема с выполнением такой процедуры из ClientDataSet

Почему при:
ClientDataSet.CommandText="insert into MyTable values (:pBLOB)"
все вставляется нормально
, а при
ClientDataSet.CommandText=
"begin insert into MyTable values (:pBLOB); end;"
если BLOB больше 32K, то выдается ошибка:
ORA-01460 Unimplemented or unreasonable conversion required?

(в обоих случаях использовалось ClientDataSet.Parameters[0].LoadFromFile(Path,ftBlob))


 
Правильный$Вася   (2010-03-18 12:35) [1]

потому что типы данных в SQL и PL/SQL слегкка отличаются


 
rar   (2010-03-18 12:37) [2]

Правильный$Вася ну и где решение?


 
rar   (2010-03-18 12:44) [3]

что в блок pl/sql нельзя передать более 32k? И решения нет?


 
Правильный$Вася   (2010-03-18 13:24) [4]

попробуй выставить Param.DataType и ParamType явно


 
Медвежонок Пятачок ©   (2010-03-18 13:37) [5]

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


 
rar   (2010-03-18 13:45) [6]

попробуй выставить Param.DataType и ParamType явно

установил ftBlob и соответственно ptInput

не помогло

Жаль похоже придется писать через Insert а потом  далее обрабатывать.

Всем спасибо.


 
Игорь Шевченко ©   (2010-03-18 19:25) [7]

через dbms_lob не поможет ?


 
Кщд   (2010-03-19 08:00) [8]


>Медвежонок Пятачок ©   (18.03.10 13:37) [5]
> даже если с клиента ничего не передавать, а последовательно
> делать конкатенацию блоб переменной прямо на сервере, то
> за пределы 32767 все равно не выпрыгнешь


SQL> declare
 2    v_amount pls_integer;
 3    v_buff   raw(32767);
 4    v_blob   blob;
 5  begin
 6  
 7    v_buff := utl_raw.cast_to_raw(lpad("Вставить более 32кБ в blob нельзя, ибо табу!", 32767, "!"));
 8    v_amount := utl_raw.length(v_buff);
 9  
10    dbms_output.put_line("Размер буфера: " || v_amount);
11  
12    dbms_lob.createtemporary(v_blob, true, dbms_lob.session);
13    dbms_lob.open(v_blob, dbms_lob.lob_readwrite);
14    for i in 1..100
15    loop
16      dbms_lob.writeappend(v_blob, v_amount, v_buff);
17    end loop;
18  
19    dbms_output.put_line("Размер полученного blob: " || dbms_lob.getlength(v_blob));
20  
21    dbms_lob.close(v_blob);
22    dbms_lob.freetemporary(v_blob);
23  
24  exception
25    -- oops! something happened! alarm!
26    when others then
27      dbms_output.put_line(sqlerrm);
28  end;
29  /

Размер буфера: 32767
Размер полученного blob: 3276700

PL/SQL procedure successfully completed

Что я делаю не так?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
2-1316145462
i2e
2011-09-16 07:57
2011.12.25
Узнать ширину/высоту полосы прокрутки


2-1307620885
alexandr
2011-06-09 16:01
2011.12.25
поворот изображения. Работа со слоями


2-1316405617
i2e
2011-09-19 08:13
2011.12.25
Прозрачный фон при выводе текста


15-1315505298
Dimka Maslov
2011-09-08 22:08
2011.12.25
Как можно отучить


15-1315254591
Юрий
2011-09-06 00:29
2011.12.25
С днем рождения ! 6 сентября 2011 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский