powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA & exception & savepoint
4 сообщений из 4, страница 1 из 1
ASA & exception & savepoint
    #38244145
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,
есть ASA 11.0.1.2596

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create or replace procedure DBA.usp_m_ma_put_news(
	in @text_headline long varchar,         
	in @text_notice long varchar,          
	in @text_value long varchar,           
	in @text_len integer
)
begin

	savepoint;
-- bla-bla-bla
			insert into dba.pin_news_text(text_headline, text_notice, text_value, text_len)
			values (@text_headline, @text_notice, @text_value, @text_len);
-- bla-bla-bla
	return 0;

exception
  when others then
    message 'usp_m_ma_put_news::Error ' || string(getdate()) || '::' || errormsg() to console;
	rollback to savepoint;
	return -1;
end;



Так вот в логе БД видим
I. 04/29 12:12:20. usp_m_ma_put_news::Error 2013-04-29 12:12:20.158::Column 'text_headline' in table 'PIN_NEWS_TEXT' cannot be NULL

а в логе приложения которое вызывает ЭТУ процедуру УЖЕ ДРУГОЕ сообщение
SEVERE: Redaction::Err:Servlet:SQL java.sql.SQLException: SQL Anywhere Error -220: Savepoint 'current' not found

Вопрос ... скорее всего rollback to savepoint порождает еще один exception!!! ПОЧЕМУ? и как все таки работать с savepoint

Модератор: не забывай про кнопку SRC
...
Рейтинг: 0 / 0
ASA & exception & savepoint
    #38244543
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create or replace procedure DBA.usp_m_ma_put_news(
	in @text_headline long varchar,         
	in @text_notice long varchar,          
	in @text_value long varchar,           
	in @text_len integer
)
begin
begin
	savepoint;
-- bla-bla-bla
			insert into dba.pin_news_text(text_headline, text_notice, text_value, text_len)
			values (@text_headline, @text_notice, @text_value, @text_len);
-- bla-bla-bla
        release savepoint;
	return 0;

exception
  when others then
    message 'usp_m_ma_put_news::Error ' || string(getdate()) || '::' || errormsg() to console;
	rollback to savepoint;
	return -1;
end;
end;
...
Рейтинг: 0 / 0
ASA & exception & savepoint
    #38245075
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не помогло ...

процедура вызывалась в режиме autocommit, убрали - не помогло

пытались делать именованные savepoint - не помогло

Что делать ? ... приведите пример использования savepoint ... release savepoint ... rollback savepoint !!!

PS:Делали так как написано в документации - не помогает.

PPS:может надо делать (внутри savepoint) begin atomic?

PPPS:конечно можно послать все нах.... и вообще не использовать "длинные" транзакции ... правильный их откат и пр.
но хотелось сделать красиво (правильно).
...
Рейтинг: 0 / 0
ASA & exception & savepoint
    #38245279
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура ... заработало

Спасибо Марсель .... я сначала не обратил внимание на то что Вы добавили begin end "вокруг" savepoint
Теперь проц. выглядит так (и вызов с отключенным автокоммитом)
create or replace procedure DBA.usp_m_MA_Put_News(
)
begin
savepoint;
begin
--bla-bla-bla
insert into dba.pin_news_text(text_headline, text_notice, text_value, text_len)
values (@text_headline, @text_notice, @text_value, @text_len);
--bla-bla-bla
commit work;
return 0;
exception
when others then
message 'usp_m_ma_put_news::Error ' || string(getdate()) || '::' || errormsg() to console;
rollback to savepoint;
end;
return -1;
end;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA & exception & savepoint
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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