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

Вниз

BLOB поля   Найти похожие ветки 

 
Maverick   (2004-10-15 17:24) [0]

Здравствуйте все!
на сервере отписана процедура вида (взято прямо из хелпа):
CREATE OR REPLACE

PROCEDURE ODAC_BLOB_Insert (
 p_ID NUMBER,
 p_Title VARCHAR2,
 p_Pic OUT BLOB
)
is
begin
 INSERT INTO ODAC_BLOB(ID, Title, Pic)
 VALUES (p_ID, p_Title, EMPTY_BLOB())
 RETURNING Pic
 INTO p_Pic;
end;

вызываю функцию и передаю blob, вылетает ошибка
"LOB locators cannot span transactions"
мучаюсь второй день, кто сталкивался с подобными проблемами помогите плиз


 
Maverick   (2004-10-15 17:26) [1]

база- Oracle


 
Reindeer Moss Eater ©   (2004-10-15 17:31) [2]

ORA-22990: LOB locators cannot span transactions
Cause: A LOB locator selected in one transaction cannot be used in a different transaction.

Причина скорее всего в способе вызова процедуры из приложения


 
Reindeer Moss Eater ©   (2004-10-15 17:33) [3]

То есть лоб-локатор возвращается на клиента что бы потом использоваться для записи в него данных.
И все это поделено на две разные транзакции (рождение локатора и запись данных)


 
Maverick   (2004-10-15 17:38) [4]

ээ.. из приложения я просто вызываю процедуру.. откуда там могут появится доп транзакции?
хотя ща попробую проверить на существование транзакций и их отрубить если есть...


 
Reindeer Moss Eater ©   (2004-10-15 17:41) [5]

insert ... values ... returning надо писать в SQL.Text используемого компонента.
Если конечно позволяет используемая библиотека.

Приведенный пример выше - для использования в PL/SQL.


 
Maverick   (2004-10-15 17:44) [6]

дык я вызываю хранимую процедуру и передаю blob поле как параметр,
если использовать копоненты то там нормально, проблема именно с процедурой


 
Reindeer Moss Eater ©   (2004-10-15 17:44) [7]

Приведенный пример выше - для использования в PL/SQL.


 
Maverick   (2004-10-15 17:48) [8]

а где можно подробнее почитать про рождение локатора и запись данных?


 
Val ©   (2004-10-15 17:48) [9]

Что-то я не очень понял: передаете при вызове блоб как параметр, а он у вас объявлен выходным..


 
Reindeer Moss Eater ©   (2004-10-15 17:49) [10]

В бело-оранжевой книжке с муравьями на обложке.
Иногда её видно прямо здесь.


 
Maverick   (2004-10-15 17:50) [11]

я сам это не до конца понял но так говорят отцы разработчики :)
вызываю из приложения след образом :

       with OraStoredProc do begin
         StoredProcName := "ODAC_BLOB_Insert";
         PrepareSQL;  // receive parameters

         ParamByName("p_ID").AsInteger := 10;
         ParamByName("p_Title").AsString := ExtractFileName(FileName);

         ParamByName("p_Pic").ParamType := ptInput;  
         ParamByName("p_Pic").AsOraBlob.LoadFromFile(FileName);
         Execute;


 
Val ©   (2004-10-15 17:57) [12]

>[11] Maverick   (15.10.04 17:50)
кто говорит, где?


 
Maverick   (2004-10-15 18:01) [13]

>[12] Val(15.10.04 17:57)
в хелпе для ODAC


 
Val ©   (2004-10-15 18:21) [14]

>Reindeer Moss Eater ©
прокомментируйте, пожалуйста.


 
Maverick   (2004-10-15 19:03) [15]

Reindeer Moss Eater, большое спасибо за наводку...где то действительно видимо была открыта транзакция...
вообщем commit  я делал в вызываемой процедуре.
убрал там commit  и в приложении процедуру вызвал внутри транзакции- все заработало, хотя до конца еще не разобрался



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

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

Наверх





Память: 0.47 MB
Время: 0.046 c
1-1098967297
Chlavik
2004-10-28 16:41
2004.11.14
Надо после QueryInterface как то уничтожать полученый интерфейс ?


1-1098850367
Franzy
2004-10-27 08:12
2004.11.14
"Теологический" вопрос о динамических массивах


14-1098478757
esu
2004-10-23 00:59
2004.11.14
Компьютер для женщин. Самоучитель


14-1099002605
GanibalLector
2004-10-29 02:30
2004.11.14
Двенадцать заповедей пролетариата


1-1098960063
_Kirill_
2004-10-28 14:41
2004.11.14
Способы хранения на диске большого кол-ва переменных НЕ в БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский