powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Программирование на Sybase SQL
4 сообщений из 4, страница 1 из 1
Программирование на Sybase SQL
    #32065031
erkinda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня проблема при работе на Sybase.

Ситуация следующая:

1. Создаем SP:

create procedure p as
create table #t(n int)
insert into #t values(1)
select * from #t
drop table #t

2. Открываем транзакцию

begin tran
select @@trancount

3. Выполняем процедуру

exec p

Результат - сообщение об ошибке №277:

"There was a transaction active when exiting thestored procedure '%.*s'. The temporary table '%.*s' was dropped in this transactioneither explicitly or implicitly. This transaction has been aborted to preventdatabase corruption."

Пояснения к ошибке в документации следующие:

Explanation
When exiting a stored procedure, Adaptive Server checks to see whether there is an active transaction (a transaction that has not been committed) and then checks to see whether any temporary objects exist for that uncommitted transaction.
If temporary objects exist, the transaction is rolled back, the temporary objects are dropped, and Error 277 is raised.

В моем случае временная таблица удаляется. В чем же дело? Помоготе пожалуйста разобраться.

Дима.
...
Рейтинг: 0 / 0
Программирование на Sybase SQL
    #32065087
Vit.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1)Внутри процедуры порождаются свои транзакции
по create,insert плюс select порождает неявный
курсор.
Проверь CURSOR_CLOSE_ON_COMMIT установку.

2)А зачем,если не секрет, защищать транзакцией
sp,работающую с локальной временной таблицей,
если таблица и так находится в монопольном использовании?
...
Рейтинг: 0 / 0
Программирование на Sybase SQL
    #32065190
erkinda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответ на 2). Дело в том, что процедура работает не только с временными таблицами, но и модифицирует данные в постоянных таблицах. Временные таблицы нужны для хранения промежуточных наборов данных. Такой алгоритм.
...
Рейтинг: 0 / 0
Программирование на Sybase SQL
    #32065469
Maxim Pugach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если честно, то енто все треп,
команда drop table не является логируемой,
а следовательно глюик,
представь, что тебе нужно восстановить данные,
а в логе пусто)
глюик батенька,
эта процедура никогда не откатится,
и не завершит нормально транзакцию:(((
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Программирование на Sybase SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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