我有以下代码,如果我的值无效,则返回错误消息.如果给定的值不是数字,我想给出相同的错误消息.
IF(option_id = 0021) THEN IF((value<10000) or (value>7200000) or /* Numeric Check */)THEN ip_msg(6214,option_name); -- Error Message return; END IF; END IF;
在sql Server中,我只使用了ISNUMERIC().我想在Oracle中做类似的事情.如,
IF((!ISNUMERIC(value)) or (value<10000) or (value>7200000)) THEN ...
解决方法
没有内置功能.你可以写一个
CREATE FUNCTION is_numeric( p_str IN VARCHAR2 ) RETURN NUMBER IS l_num NUMBER; BEGIN l_num := to_number( p_str ); RETURN 1; EXCEPTION WHEN value_error THEN RETURN 0; END;
和/或
CREATE FUNCTION my_to_number( p_str IN VARCHAR2 ) RETURN NUMBER IS l_num NUMBER; BEGIN l_num := to_number( p_str ); RETURN l_num; EXCEPTION WHEN value_error THEN RETURN NULL; END;
然后你可以做
IF( is_numeric( str ) = 1 AND my_to_number( str ) >= 1000 AND my_to_number( str ) <= 7000 )