Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1098686675
syte_ser78
2004-10-25 10:44
2004.11.14
Как сделать чтобы DmClient 2.1.2 запомнил имя и емейл в форме ?


14-1098685930
snake1977
2004-10-25 10:32
2004.11.14
Вопрос новичка


3-1097393378
Vladgul
2004-10-10 11:29
2004.11.14
Создание собственной БД


1-1098881849
AndrewK
2004-10-27 16:57
2004.11.14
Передача Variant из DLL


14-1098791059
VolanD666
2004-10-26 15:44
2004.11.14
Отличия Builder and Delphi.





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