Oracle
 sql >> Database >  >> RDS >> Oracle

Come si esce da uno script in SQLPlus quando si verifica un errore e si torna al prompt di SQLPlus senza disconnettersi o uscire da SQLPlus?

Ho trovato un'idea interessante qui che, se combinata con la risposta di spencer7593, mi porterà a una chiamata selettiva di subscript, a cui posso passare i valori di output PL/SQL. Ad esempio:

VAR continue number;
EXEC :continue := 1;
BEGIN
   SELECT some_bool_test() INTO :continue FROM dual;
END;

SET termout OFF
COLUMN script_name NEW_VALUE v_script_name
SELECT decode(:continue, 1, 'run_stuff.sql', 'skip.sql') script_name FROM dual;
SET termout ON

@&v_script_name :some_other_values

Dove skip.sql è un file di testo vuoto.
 

AGGIORNAMENTO: Ho spostato la maggior parte di questo in un RUN.SQL file, dove passo il booleano (0 o 1) come &1 , il nome dello script da chiamare in caso di successo come &2 , e quindi qualsiasi altro parametro previsto da passare allo script chiamato. Quindi, finisce per assomigliare a questo:

VAR continue number;
EXEC :continue := 1;
BEGIN
   SELECT some_bool_test() INTO :continue FROM dual;
END;

@run.sql :continue 'run_stuff.sql' :some_other_values