Na linguagem do lado do servidor Sybase, como meu código pode testar se está sendo executado no modo encadeado ou desencadeado (auto-commit)?
Examinar o status de @@TRANCOUNT
não é realmente conclusivo.
Eu entendo que deve haver uma maneira como, por exemplo, JDBC fornece getAutoCommit que é capaz de detectar se a conexão está no modo auto-commit (unchained) ou não. Mas como faço isso de dentro de um procedimento armazenado?
Eu encontrei esta pergunta , mas parece responder apenas ao SQL Server.
O modo padrão do Sybase ASE é desencadeado, como suspeito que você já saiba.
Você pode usar
SELECT @@tranchained;
para ver o status do modo de encadeamento de transações da sessão atual.O resultado é 0 ou 1, conforme o seguinte:
O modo de encadeamento de transações pode ser modificado com
SET CHAINED ON;
ouSET CHAINED OFF;