Главная страница
    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.055 c
1-1099385372
Sash
2004-11-02 11:49
2004.11.14
excel


1-1098967275
Wolffgang
2004-10-28 16:41
2004.11.14
Выгрузка dll


1-1099228145
buSel
2004-10-31 16:09
2004.11.14
Взаимодействие между формами


1-1099304890
kirilllius
2004-11-01 13:28
2004.11.14
Массив типа TImage


1-1099285151
Anics
2004-11-01 07:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский