Imagem de fundo

Em um sistema corporativo executado sobre Oracle Database, a equipe de desenvolvimento ...

Em um sistema corporativo executado sobre Oracle Database, a equipe de desenvolvimento implementou uma rotina em PL/SQL para registrar auditoria de alterações em uma tabela crítica. A rotina deveria gravar informações em uma tabela de log mesmo quando a transação principal fosse posteriormente desfeita por erro de regra de negócio. Durante a revisão técnica, discutiu-se o uso de blocos PL/SQL, tratamento de exceções, controle transacional e possíveis efeitos colaterais de commits dentro de rotinas chamadas por outras transações. De acordo com o caso, é CORRETO afirmar que:


A

Um bloco PL/SQL não pode conter comandos SQL de manipulação de dados, pois sua finalidade é apenas controlar fluxo procedural, cabendo exclusivamente ao SQL externo executar INSERT, UPDATE e DELETE.


B

O uso de COMMIT dentro de qualquer procedure PL/SQL é sempre recomendado para garantir atomicidade, pois impede que erros posteriores da aplicação desfaçam alterações já validadas no mesmo contexto transacional.


C

O tratamento de exceções em PL/SQL desfaz automaticamente todas as alterações realizadas no bloco, mesmo sem comando explícito de ROLLBACK, pois toda exceção provoca reversão integral da sessão corrente.


D

Uma transação autônoma pode ser utilizada em PL/SQL para registrar informações de auditoria com controle transacional independente da transação chamadora, mas seu uso exige cautela para não comprometer consistência lógica, rastreabilidade e semântica esperada da operação principal.