我有以下代码,如果我的值无效,则返回错误消息.如果给定的值不是数字,我想给出相同的错误消息.
- 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 )