В Sybase смешно использовать пользовательские (явные) транзакции вместе с использованием таблиц #temp (где временная таблица создается во время транзакции ).Что бы там ни было, Sybase рассматривает создание таблицы #temp (в том числе с помощью оператора select in) как оператор DDL в контексте tempdb.В редакторе с настройками по умолчанию для сервера / базы данных вы получите сообщение об ошибке, когда вы сделаете это.
В качестве теста вы можете попробовать установить параметр 'ddl in tran' (в контекстебаза данных tempdb) к истине.Затем посмотрите, не меняется ли поведение.
Обратите внимание, однако, что навсегда оставить этот параметр на месте - плохая идея (согласно документации Sybase).Я предлагаю это только для исследовательских целей.
Реальное решение (если мое предположение о проблеме верное), вероятно, заключается в том, чтобы сначала создать таблицу #temp, а затем начать транзакцию, чтобы избежать любых DDL-операций вобъем сделки.