Eu gostaria de usar uma rotina ASSERT funcionalmente semelhante à encontrada em outros idiomas, ou seja, uma construção (seja um procedimento, sintaxe ...)
ASSERT( <condition>, <msg>)
de modo que, quando o <condition>
passado no primeiro argumento for falso, uma exceção seja gerada com a <msg>
mensagem descritiva especificada .
Eu sei que isso é trivial de fazer à mão, mas estou perguntando se há um padrão fornecido com o DBMS.
Ter que escrever o meu próprio ou importar um de pacotes de terceiros seria impraticável, pois eu precisaria que fosse completamente portátil e transparente para todos os projetos em que estou trabalhando.
oracle
error-handling
user881430
fonte
fonte
Respostas:
Não há um procedimento de asserção interno no SQL ou PL / SQL, portanto, você precisará escrever o seu próprio.
Existem duas maneiras de fazer isso. Você pode gerar manualmente uma exceção, conforme discutido neste artigo da Oracle , ou pode escrever um wrapper para o
raise_application_error
procedimento, que está documentado na seção de manipulação de exceções do Oracle da documentação.Acrescentarei que as exceções foram projetadas para esse tipo de cenário, então é melhor tirar o chapéu do programador por um segundo e usar o chapéu do DBA :)
fonte
O pacote DBMS_ASSERT interno é uma versão com escopo restrito do que você está procurando. Para outras afirmações, Phil está correto, você terá que construir o seu próprio. Aqui está uma demonstração simples da segunda opção na resposta de Phil +1 :
fonte