powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ORA-01013: user requested cancel of current operation
5 сообщений из 5, страница 1 из 1
ORA-01013: user requested cancel of current operation
    #39527626
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня! Имеется приложение Delphi 7, компоненты DOA и Oracle 11g.
Стоит задача передать файл CLOB в базу, там его распарсить и закинуть в таблицу.
Парсингом занимается хранимая процедура.
Кинул компонент TOracleQuery(spLoad), TOracleEvent(evNext) и TcxProgressBar(pBar).
У spLoad включил свойство Threaded = True. Передаю в spLoad CLOB и делаю
Код: pascal
1.
2.
3.
4.
5.
       spLoad.Execute;  
       while spLoad.ThreadIsRunning do begin
         Application.ProcessMessages;
         Sleep(10)
       end;



а на событие evNext наращиваю TcxProgressBar.
Так вот, если записей мало (3к-10к), то все работает отлично. Если записей свыше 100 тысяч, то во время обработки выходит ошибка:
"ORA-01013, user requested cancel of current operation". Почему?

В документашке DOA написано "Any executing query can be aborted by calling the TOracleSession.BreakExecution method.
This causes an "ORA-01013, user requested cancel of current operation"
exception for the currently executing query in that session."
Но я же этого не делаю... Куда копать?
...
Рейтинг: 0 / 0
ORA-01013: user requested cancel of current operation
    #39527772
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

А срабатывание какого-нить таймаута такой эффект может вызвать? С Ораклом последний раз сражался лет 5 назад, но почему-то именно это в голову пришло..
...
Рейтинг: 0 / 0
ORA-01013: user requested cancel of current operation
    #39527803
mbb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mbb
Гость
aidynchik, чисто для "разведки" делал так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
procedure TForm1.Button1Click(Sender: TObject);
//insert into my_xml values(3, :PFX,  XMLType(:XML, nls_charset_id('CL8MSWIN1251')))
// Структура my_xml
//|Поле      |Тип       |Длина  |Точность  |Null        |Default  |Комментарии  
//|SID       |NUMBER    |22     |          |Not null !  |         |             
//|FILE_XML  |VARCHAR2  |15     |          |Y           |         |             
//|XT        |XMLTYPE   |2000   |          |Y           |         |             

var LOB: TLOBLocator;
  Buffer: array[0..4095] of char;
  f: file;
  numRead: Integer;
begin
  if not OpenDialog.Execute then Exit;
  if not os.Connected then os.Connected := True;

  with oq do
  begin

    LOB := TLOBLocator.CreateTemporary(os, otBLOB, True);
    AssignFile(f, OpenDialog.FileName);
    Reset(f, 1);
    repeat
      BlockRead(f, Buffer, SizeOf(Buffer), numRead);
      LOB.Write(Buffer, numRead);
    until (NumRead = 0) or (SizeOf(Buffer) <> NumRead);
    CloseFile(f);

    SetComplexVariable('XML', LOB);
    SetVariable('PFX', ExtractFileName(OpenDialog.FileName));
    Execute;
    LOB.Free;

  end;

  os.Connected := False;

end;



С файлами большого объёма - они целиком не влезают в переменную, отсылаемую на сервер. Но у меня "ругался" Oracle на невалидность XML - он же был обрезан, но связь вроде не рвалась. В отдельной нити не пробовал.
Этой процедурой загружал довольно большие xml-файлы, выбирал из них данные. Небольшие файлики грузились беспроблемно и без всяких буферов и LobLocator.
...
Рейтинг: 0 / 0
ORA-01013: user requested cancel of current operation
    #39528038
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

да в том-то и дело, что никаких таймаутов вроде бы нет... Если выключить Threaded = True, то все грузится без проблем
...
Рейтинг: 0 / 0
ORA-01013: user requested cancel of current operation
    #39528060
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решена - нужно было просто новую сессию создать, а не цепляться к уже существующей
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ORA-01013: user requested cancel of current operation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]