Ich möchte jede SQL-Fehler fangen, die so passieren könnte ich schrieb dies im KSH:Wie sqlplus beenden, wenn ein Fehler passiert
$ORACLE_HOME/bin/sqlplus -s u/p <<EOF
WHENEVER OSERROR EXIT 68;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
CREATE TABLE new_table
AS (SELECT * FROM wrong_old_table);
COMMIT;
EOF
ich für die alte Tabelle, die einen falschen Namen zu sehen, setzen, was passiert. Ich erwarte, dass nur die sqlcode haben, wie ich frage in WHEN SQLERROR aber ich habe dies:
AS (SELECT * FROM wrong_old_table)
*
ERROR at line 2:
ORA-00942: table or view does not exist
ich den Code geändert:
$ORACLE_HOME/bin/sqlplus -s u/p <<EOF
WHENEVER OSERROR EXIT 68;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
BEGIN
CREATE TABLE new_table
AS (SELECT * FROM wrong_old_table);
COMMIT;
END;
EOF
sql_code=$?
echo "code=$sql_code"
Obwohl es ein Fehler ist, der Code gleich 0 Wo ist der sql Fehlercode?
In der Tat, keine Verwendung von begin ... end und es funktioniert
Welches Betriebssystem und welche Shell verwenden Sie? –