Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
create or replace
FUNCTION NumberTrue(VAL in varchar2)
RETURN BOOLEAN IS
Result varchar2(100);
i integer;
c char(1);
V_ReturnValue BOOLEAN;
BEGIN
Result:='';
if not (VAL is NULL) then
for i in 0..length(VAL) loop
c:=substr(VAL,i,1);
if (c>='0') and (c<='9') then V_ReturnValue :=TRUE;
else
V_ReturnValue :=FALSE;
GOTO end1;
end if;
end loop;
end if;
<<end1>>
return V_ReturnValue;
END;
В смысле, нужно было написать нечто вроде этого? )
FUNCTION NumberTrue(VAL in varchar2) RETURN BOOLEAN
IS
BEGIN
TO_NUMBER(VAL);
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
З.Ы.: А разве в Oracle есть тип BOOLEAN?
TO_NUMBER(VAL); -- такая конструкция запрещена (обязательно нужно возвращаемое значение использовать: присвоить, в IF запихнуть или еще как), плюс ему нужна проверка на целочисленность (для проверки можно заюзать тип INTEGER), и количество знаков до 100 (тип NUMBER и его подтипы(включая INTEGER) ограничены 38 знаками)
FUNCTION NumberTrue(VAL in varchar2) RETURN BOOLEAN
IS
BEGIN
TO_NUMBER(VAL);
RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END;
З.Ы.: А разве в Oracle есть тип BOOLEAN?
З.Ы.: В PL/SQL есть тип BOOLEAN.
RETURN REGEXP_LIKE(VAL, '^\d+$');