检查varchar是否是Oracle表单中的数字

时间:2012-11-02 19:51:16

标签: oracle oracle10g oracleforms

如何检查varchar是否为数字或包含Oracle表单中的任何特殊字符。

我尝试使用以下代码,但它给出了逻辑错误

declare
    v_valid varchar2(15);
begin
    v_valid := :HEADERS.REFERENCE ;
If NOT v_valid IN ('0','1','2','3','4','5','6','7','8','9') then
        message('Characters or Special Symbols are not allowed here');
end if; 
end;

2 个答案:

答案 0 :(得分:4)

尝试将其转换为数字并捕获异常。

    vVarchar varchar2(15) := '15';
    nNumber number;
    BEGIN
        nNumber := to_number(vVarchar);         
        message('Success!!');
    EXCEPTION WHEN VALUE_ERROR THEN
        message('Characters or Special Symbols are not allowed here');
    END;

这实际上就是你正在做什么 If v_valid NOT Between '0' AND '9' then你会遇到很多输入这样的问题:'2aas', '9&%$'

考虑将:HEADERS.REFERENCE更改为对象属性中的数字,应该更容易。

答案 1 :(得分:-1)

我能够解决它。这是代码

declare
    v_valid varchar2(15);
begin
    v_valid := :HEADERS.REFERENCE ;
If v_valid NOT Between '0' AND '9' then
        message('Characters or Special Symbols are not allowed here');
end if; 
end;