Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Lassen Sie Puppet-Build fehlschlagen, wenn die Ausführung des enthaltenen SQL-Skripts fehlschlägt

Ich glaube, Puppet erkennt den Erfolg des Skripts anhand des Rückgabecodes des aufgerufenen Programms. Standardmäßig gibt sqlplus 0 zurück, wenn Sie es schließen, unabhängig davon, was während der Sitzung ausgeführt wurde.

[[email protected] ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Apr 17 08:47:08 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select asdjkhasd from sadbjaksd;
select asdjkhasd from sadbjaksd
                      *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[[email protected] ~]$ echo $?
0

Wenn Sie möchten, dass sqlplus mit einem Fehlerstatus beendet wird, können Sie den Befehl always verwenden, z. B.

[[email protected] ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Thu Apr 17 08:48:17 2014

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> whenever sqlerror exit failure;
SQL> select bogus from nowhere;
select bogus from nowhere
                  *
ERROR at line 1:
ORA-00942: table or view does not exist


Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[[email protected] ~]$ echo $?
1

Beachten Sie im letzteren Fall den unterschiedlichen Rückkehrcode. Dies sollte ausreichen, um Puppet mitzuteilen, dass der Befehl fehlgeschlagen ist.