powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Результат выставления значения continue опции on_error в [ASA 9.0.2.3924]
2 сообщений из 2, страница 1 из 1
Результат выставления значения continue опции on_error в [ASA 9.0.2.3924]
    #38833307
sergryaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Реализуется удаление строк по признаку(значение флага) с выводом лога в файл.
Ошибки должны игнорироваться, поэтому значение опции ON_ERROR выставлено в значение "CONTINUE". Однако ошибки не игнорируются и выдается ошибка вида:

Код: plaintext
1.
2.
3.
4.
5.
Could not execute statement.
No primary key value for foreign key '*column_name*' in table '*table_name*'
SQLCODE=-203, ODBC 3 State="42000"
Line 1, column 1
(Continuing after error)


Насколько я понимаю такое поведение соответствует значению "PROMPT", однако
в таблице, вызванной запросом set, значение выставлено "Continue".

Вот листинг:

Код: sql
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.
begin
declare li_inv_id integer;
    set li_inv_id=(select min(id) from inv where user_111_flag = 0 and id <> 0);
  cycle_loop:
  while li_inv_id is not null loop
  message li_inv_id type status to client;
   set temporary option on_error = 'continue';
    delete from inv where id = li_inv_id;
        if sqlcode < 0 then
      unload select "left"(getdate(*),19) || ';id=' || li_inv_id || ';SQLCODE:' || sqlcode || '\x0A' from dummy to 'e:\\delete_inv.csv' append on delimited by ',' escapes off quotes off;
      rollback work;
      set li_inv_id=(select min(id) from inv where user_111_flag = 0 and id > li_inv_id)
    else
      commit work;
      if sqlcode < 0 then
        unload select "left"(getdate(*),19) || ';id=' || li_inv_id || ';SQLCODE:' || sqlcode || '\x0A' from dummy to 'e:\\delete_inv.csv' append on delimited by ',' escapes off quotes off;
        rollback work;
        set li_inv_id=(select min(id) from inv where user_111_flag = 0 and id > li_inv_id)
      else
        unload select "left"(getdate(*),19) || ';id=' || li_inv_id || ';SQLCODE:' || sqlcode || '\x0A' from dummy to 'e:\\delete_inv.csv' append on delimited by ',' escapes off quotes off;
        set li_inv_id=(select min(id) from inv where user_111_flag = 0 and id > li_inv_id)
      end if 
    end if
  end loop cycle_loop
end
...
Рейтинг: 0 / 0
Результат выставления значения continue опции on_error в [ASA 9.0.2.3924]
    #38833308
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergryazРеализуется удаление строк по признаку(значение флага) с выводом лога в файл.
Ошибки должны игнорироваться, поэтому значение опции ON_ERROR выставлено в значение "CONTINUE". Однако ошибки не игнорируются и выдается ошибка вида:
Эта опция относится только в dbisql. На выполнение скриптов внутри сервера она никак не влияет.

У тебя весь скрипт взят в begin-end скобки. Для dbisql это команда взять весь скрипт разом, отдать его серверу на выполнение и сидеть ждать в сторонке.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Результат выставления значения continue опции on_error в [ASA 9.0.2.3924]
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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