Обработка исключений в SQL? - PullRequest
0 голосов
/ 29 марта 2010

Есть ли способ обрабатывать исключения в SQL (ORACLE 9i), не говоря о PL / SQL только SQL?

Поскольку я пытался разделить значения столбца, который содержит как числа, так и литералы Мне нужно извлечь из него только числа, так как если оно делится на любое число, то его число, если оно содержит литералы, которые не разделятся, вызовет ошибку.

как справиться с этими ошибками? Пожалуйста, предложите !!

Ответы [ 3 ]

1 голос
/ 29 марта 2010

Напишите простую IS_NUMERIC PL / SQL функцию для фильтрации ваших данных:

CREATE OR REPLACE FUNCTION IS_NUMERIC (p_input varchar2)
RETURN NUMBER
DETERMINISTIC
IS
  l_checkvar number;
BEGIN
  l_checkvar := coalesce(to_number(p_input), 'X');  -- maps null as non-numeric
  return 1;
EXCEPTION
  WHEN OTHERS THEN
    return 0;
END;
/

Тогда ваш запрос будет:

SELECT MY_NUMBER / MY_MIXED_VALUES
  FROM MY_TABLE
 WHERE IS_NUMERIC (MY_MIXED_VALUES) = 1
0 голосов
/ 29 марта 2010

Не уверен насчет Oracle, но @@ ERROR должен возвращать любой код ошибки, который ваш SQL-оператор генерирует во время работы. Я бы запустил обработку исключений вокруг этого:

<code>
If @@ERROR <> 0
BEGIN
    ...
    [Your Code Here]
    ...
END
0 голосов
/ 29 марта 2010

Исключения в oracle обрабатываются предложением exception when ... then. Все, что вам нужно, это выяснить код исключения.

begin
  --Your code here
exception when YOUR_EXCEPTION_CODE then
  --Exception handling here
end;
...