Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como faço para sair de um script no SQLPlus quando ocorre um erro e retornar ao prompt do SQLPlus, sem desconectar ou sair do SQLPlus?


Encontrei uma ideia interessante aqui que, quando combinada com a resposta de spencer7593, me fará uma chamada seletiva de subscript, para a qual posso passar os valores de saída PL/SQL. A saber:
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

Onde skip.sql é um arquivo de texto vazio.
 


ATUALIZAÇÃO: Movi a maior parte disso para um RUN.SQL arquivo, onde passo o booleano (0 ou 1) como &1 , o nome do script para chamar o sucesso como &2 e, em seguida, quaisquer outros parâmetros esperados para passar para o script chamado. Assim, acaba ficando mais ou menos assim:
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