Простая функция PL / SQL для проверки, является ли строка числом

Я имел опыт работы с T-SQL из SQL Server, но недавно начал работать над проектом, использующим базу данных Oracle (11g), и у меня возникли некоторые проблемы с написанием того, что кажется базовым кодом.

Мне нужно проверить, являются ли набор значений числовыми, и вставить их в таблицу, только если они есть. PL / SQL не 'Кажется, у него есть функция is_number, поэтому я написал свою собственную на основе вопроса AskTom.

create or replace 
function          IS_NUMBER(str in varchar2) return boolean
IS
  n number;
BEGIN
  select to_number(str) into n from dual;
  return (true);
EXCEPTION WHEN OTHERS THEN
  return (false);
END;

В конце концов, яЯ хотел бы использовать эту функцию в предложении WHERE, но сейчас яя просто пытаюсь заставить его работать вообще:

declare
  str varchar2(1);
  n boolean;
begin
  str := '0';
  select ca_stage.is_number(str) into n from dual;
end;

В SQL Developer, попытка запустить это дает мне следующее сообщение об ошибке:

Error report:
ORA-06550: line 6, column 39:
PLS-00382: expression is of wrong type
ORA-06550: line 6, column 19:
PLS-00382: expression is of wrong type
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Отчет об ошибке прост, но нене имеет смысла. Функция принимает varchar2, и это 'что ям, используя в качестве входной переменной. Возвращает логическое значение и сновачто ям с помощью.

Как я уже сказал, это основной код, поэтому я предполагаю, чтоМне не хватает чего-то фундаментального.

Ответы на вопрос(1)

Ваш ответ на вопрос