1

如何检查 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;
4

2 回答 2

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在对象的属性中更改为数​​字,应该更容易。

于 2012-11-02T22:43:20.337 回答
-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;
于 2012-11-02T20:29:50.870 回答