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 に答える