/** Check if an exception is raised or EXIT executed, and we should leave the block */ boolean canContinue(String label) { Signal signal = exec.signalPeek(); if (signal != null && signal.type == Signal.Type.SQLEXCEPTION) { return false; } signal = exec.signalPeek(); if (signal != null && signal.type == Signal.Type.LEAVE_LOOP) { if (signal.value == null || signal.value.isEmpty() || (label != null && label.equalsIgnoreCase(signal.value))) { exec.signalPop(); } return false; } return true; }
/** GET DIAGNOSTICS EXCEPTION statement */ public Integer getDiagnosticsException(HplsqlParser.Get_diag_stmt_exception_itemContext ctx) { trace(ctx, "GET DIAGNOSTICS EXCEPTION"); Signal signal = exec.signalPeek(); if (signal == null || (signal != null && signal.type != Signal.Type.SQLEXCEPTION)) { signal = exec.currentSignal; } if (signal != null) { exec.setVariable(ctx.ident().getText(), signal.getValue()); } return 0; }