sql >> Database >  >> RDS >> Oracle

Hoe verlaat ik een script in SQLPlus wanneer er een fout optreedt en keer ik terug naar de SQLPlus-prompt, zonder SQLPlus te verbreken of af te sluiten?

Ik heb hier een interessant idee gevonden dat, in combinatie met het antwoord van spencer7593, me selectieve subscript-aanroepen zal opleveren, waaraan ik de PL/SQL-uitvoerwaarden kan doorgeven. Te weten:

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

Waar skip.sql is een leeg tekstbestand.
 

UPDATE: Ik heb het meeste hiervan verplaatst naar een RUN.SQL bestand, waar ik in de boolean (0 of 1) doorgeef als &1 , de scriptnaam om succes aan te roepen als &2 , en vervolgens alle andere verwachte parameters die aan het aangeroepen script moeten worden doorgegeven. Dus uiteindelijk ziet het er ongeveer zo uit:

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


  1. De env-variabele gebruiken in Application.properties van Spring Boot

  2. ClassCastException:java.math.BigInteger kan niet worden gecast naar java.lang.Lang bij verbinding met MySQL

  3. Oracle vóór invoegen OF update-triggervoorbeeld

  4. SQL Server Bulk invoegen van CSV-bestand met inconsistente aanhalingstekens