Контролировать исключение NOT NUMBER PL/SQL

Как контролировать исключение, когда переменная замены получает цепь символов?

Хорошие, в анонимный блок я ввел несколько переменных замены, одна из них типа NUMBER и я не встречаю клавиши, чтобы контролировать, что переменная получает числовую стоимость. Я попытался с "WHEN OTHERS THEN", создавая исключение используя RAISE APPLICATION ОШИБКА, укрывая IFS для того, чтобы, если он не входит, он пошел к else (как будто это была ошибка), и хорошо, я не встречаю ключа, и мне кажется самым основным.

Я издаю: Я использую Oracle SQL Developer.

Здесь анонимный блок примера:

SET SERVEROUTPUT ON;

DECLARE
-- Pido el número
  dato_numerico NUMBER := &Dime_un_numero;

-- Excepción por si es negativo
  numero_negativo EXCEPTION;

BEGIN

  IF dato_numerico < 0 THEN
    RAISE numero_negativo;
  END IF;

  DBMS_OUTPUT.PUT_LINE('El número es: '||dato_numerico);

EXCEPTION
  WHEN numero_negativo THEN
      DBMS_OUTPUT.PUT_LINE('El número no puede ser negativo');

END;
0
задан 09.03.2019, 06:09
1 ответ

PodrГ-схвати получать стоимость как текст и позже пробовать конвертировать это в numГ©rico, в таком случае, что conversiГіn побил козырем ее, тогда это не будет действительное число.

SET SERVEROUTPUT ON;
--
DECLARE
  dato_raw      VARCHAR2(4000);
  dato_numerico NUMBER;
  -- Excepciones
  numero_negativo EXCEPTION; -- Excepción por si es negativo
  error_conversion EXCEPTION; -- Error en caso de que no sea posible convertir a numerico
  -- Inicializar excepciones
  PRAGMA EXCEPTION_INIT(error_conversion, -06502);
BEGIN
  dato_raw := '&Dime_un_numero';
  dato_numerico := TO_NUMBER(dato_raw);
  --
  IF dato_numerico < 0 THEN
    RAISE numero_negativo;
  END IF;
  --
  DBMS_OUTPUT.PUT_LINE('El número es: '||dato_numerico);
  --
EXCEPTION
  WHEN numero_negativo THEN
    DBMS_OUTPUT.PUT_LINE('El número no puede ser negativo');
  WHEN error_conversion THEN
    DBMS_OUTPUT.PUT_LINE('Debe ingresar un numero valido');
END;
1
ответ дан 19.11.2019, 22:22

Теги

Похожие вопросы