|
Программирование на Sybase SQL
|
|||
---|---|---|---|
#18+
У меня проблема при работе на 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. В моем случае временная таблица удаляется. В чем же дело? Помоготе пожалуйста разобраться. Дима. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 16:47 |
|
Программирование на Sybase SQL
|
|||
---|---|---|---|
#18+
1)Внутри процедуры порождаются свои транзакции по create,insert плюс select порождает неявный курсор. Проверь CURSOR_CLOSE_ON_COMMIT установку. 2)А зачем,если не секрет, защищать транзакцией sp,работающую с локальной временной таблицей, если таблица и так находится в монопольном использовании? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2002, 18:33 |
|
Программирование на Sybase SQL
|
|||
---|---|---|---|
#18+
Ответ на 2). Дело в том, что процедура работает не только с временными таблицами, но и модифицирует данные в постоянных таблицах. Временные таблицы нужны для хранения промежуточных наборов данных. Такой алгоритм. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 09:21 |
|
Программирование на Sybase SQL
|
|||
---|---|---|---|
#18+
Если честно, то енто все треп, команда drop table не является логируемой, а следовательно глюик, представь, что тебе нужно восстановить данные, а в логе пусто) глюик батенька, эта процедура никогда не откатится, и не завершит нормально транзакцию:((( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 15:49 |
|
|
start [/forum/topic.php?fid=55&msg=32065087&tid=2014981]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 244ms |
total: | 380ms |
0 / 0 |