J'ai essayé de comprendre cela depuis un petit moment maintenant et je pense qu'il est temps de demander de l'aide .. Je construis un script de provisioning de schéma et je veux ajouter une sortie de script et la gestion des erreurs. L'idée est que la fenêtre de sortie du script ne me montrerait que les messages clés sans tout le bruit.Traitement des erreurs dans un script Oracle
Create Temporary Error Table
Begin Transaction
-- begin work block
Print "Doing some types of work"
-- do work here
If Error and Active Transactions > 0 Then Rollback
If Active Transactions = 0 Then Insert Error In Temp Error Table and Start Another Transaction
-- end work block
-- once all all work complete
If Active Transactions > 0 Then Commit Transactions
Dans le monde SQL Server je normalement faire juste cela avec Red Gate's SQL Packager qui a ce compris (indice, indice Red Gate - nous avons besoin d'une version Oracle :)). Des idées sur où commencer avec Oracle pour obtenir quelque chose de similaire?
_Je construis un script de provisioning de schéma_ Si vous voulez dire que vous créez/modifiez des tables et autres; La restauration ne va pas aider. Dans Oracle, une commande DDL valide la transaction en cours, si elle est en attente, s'exécute elle-même dans une transaction, et valide en cas de succès, se rétablit en cas d'échec. Ainsi, après avoir exécuté une commande DDL, il n'y aura pas de transaction en attente.La seule exception étant s'il y a une erreur d'analyse, la base de données ne sait pas qu'elle était supposée exécuter une commande DDL et ne fera pas la première validation implicite, ni ne commencera une transaction pour la DDL. Ceci est très différent de SQL Server. –
Mon commentaire ne fournit pas de réponse, il est seulement là pour signaler un piège que vous pourriez ou ne pas avoir été au courant. –
@Shannon - Merci, ça craint vraiment que vous ne pouvez pas faire une transaction étendue qui inclut DDL. Cela rend la gestion des erreurs beaucoup plus difficile dans le processus d'approvisionnement en laissant la base de données dans un état à moitié cuit si quelque chose ne va pas. –