Oracle 11 - sqlplus - restauration de l'ensemble du script en cas d'erreur - comment?
Comment puis-je faire Oracle 11g restauration de l'ensemble de l'opération sur toute erreur dans inclus fichier SQL?
Le contenu du fichier est:
set autocommit off
whenever SQLERROR EXIT ROLLBACK
insert into a values (1);
insert into a values (2);
drop index PK_NOT_EXIST;
commit;
Et le fichier est inclus dans sqlplus session à l'aide de "@":
@error.sql
Comme prévu, le sqlplus la fin de la session et la sortie est
SQL> @error.sql
1 row created.
1 row created.
drop index PK_NOT_EXIST *
ERROR at line 1:
ORA-01418: specified index does not exist
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Mais quand je re-lancer sqlplus alors le tableau a contient 2 dossiers qui signifie qu'il y a un commettre et pas un rollback à la sortie de sqlplus.
Je peux en quelque sorte la force sqlplus:
- arrêter le traitement de fichier en cas d'erreur,
- et restauration de l'ensemble de la transaction en cas d'erreur?
OriginalL'auteur Grzegorz | 2013-02-08
Vous devez vous connecter pour publier un commentaire.
DDL effectue une livraison avant qu'il s'exécute et après, de sorte que même si votre DDL échoue, oracle ont déjà fait la transaction.
qui vous permettrait de travailler autour d'elle avec:
OriginalL'auteur DazzaL
J'ai résolu le problème et je poste le dos de la solution dans le cas où quelqu'un frappe un tel problème.
Si je ne mets pas DDL commandes dans le script, puis la restauration est effectuée correctement.
Donc le script:
œuvres.
Et si DDL est utilisé, en général, Oracle ne fournit pas de fonctionnalité de restauration.
ddl_statement; dml_statement_1; dml_statement_2;
et il y a une erreur dans dmlstatement_2, puis il va s'engager (bien sûr)ddl_statement
mais la restaurationdml_statement_1
etdml_statement_2
. (Ceci s'est avéré être acceptable pour notre cas).OriginalL'auteur Grzegorz