sql >> Databasteknik >  >> RDS >> Oracle

Hur avslutar jag ett skript i SQLPlus när ett fel uppstår och återgår till SQLPlus-prompten, utan att koppla bort eller avsluta SQLPlus?

Jag har hittat en intressant idé här som, i kombination med spencer7593s svar, ger mig selektiva subscript-anrop, som jag kan skicka PL/SQL-utgångsvärdena till. Alltså:

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

Där skip.sql är en tom textfil.
 

UPPDATERING: Jag har flyttat det mesta till en RUN.SQL fil, där jag skickar in boolean (0 eller 1) som &1 , skriptnamnet för framgång som &2 , och sedan alla andra förväntade parametrar att skickas till det anropade skriptet. Det slutar alltså med att det ser ut ungefär så här:

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. Hur man lägger till dagar till ett datum i MySQL

  2. SQL Server-sträng till datumkonvertering

  3. SQL JOIN vs IN prestanda?

  4. Så här visar du flera frågor och resultat sida vid sida i SQL Server Management Studio (SSMS) - SQL Server / TSQL självstudie del 14