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

Hvordan afslutter jeg et script i SQLPlus, når der opstår en fejl, og vender tilbage til SQLPlus-prompten uden at afbryde eller afslutte SQLPlus?

Jeg har fundet en interessant idé her, som, når den kombineres med spencer7593's svar, vil give mig selektive subscript-kald, som jeg kan videregive PL/SQL-outputværdierne til. Altså:

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

Hvor skip.sql er en tom tekstfil.
 

OPDATERING: Jeg har flyttet det meste af dette til en RUN.SQL fil, hvor jeg sender boolsk (0 eller 1) som &1 , scriptnavnet til at kalde på succes som &2 , og derefter eventuelle andre forventede parametre, der skal overføres til det kaldte script. Det ender således med at se sådan her ud:

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. SQL FLOAT:3 punkter, der hjælper dig med at undgå underlige matematiske fejl

  2. Oracle datatype:Skal jeg bruge VARCHAR2 eller CHAR

  3. Løsning på underforespørgsel returnerer mere end 1 række fejl

  4. Kan ikke installere pg gem på Mountain Lion