2011-07-26 13 views
3

私はいくつかのGoogle検索を行ってきましたが、数字だけ、文字列サイズの制限、電子メールアドレス、SSNなどの一般的なPL/SQL入力検証手法/ユーティリティを教えてください。ライブラリパッケージやソースコードを見つけることはできません。私はホイールを再発明したくありません:)PL/SQL入力検証手法/ utils

ありがとうございました。

+1

どう 'regexp_like'について...? – Codo

+1

どのOracleのバージョンですか?どのバージョンのフォームですか?フォームのデータを検証しようとしていますか?またはデータベースのストアドプロシージャでは? –

+0

Oracle-11は、ストアドプロシージャの "http://mysite.com?foo=123&bar=xyz"のように入力 "foo&bar"を検証する必要があります。ありがとう。 – vadimk

答えて

3

は、私が「mysite.com?foo=123 &バー= XYZ」

+0

あなたの答えに感謝janbom – vadimk

0

のような文字列を検証する必要があるだろう場合、私はdefenetly REGEXP_LIKEを使用するオラクルのバージョンおよび/またはフォームに依存するというスクリプトがありますdbsmany.sqlは、おそらく{ORACLE_HOME} /rdbms/admin/dbmsany.sqlにある有用なものです。

あなたが探しているものではありませんが、面白いアプローチのanydataタイプがあります。より多くの公共および便利なPL/SQLスクリプトの場合

CREATE OR REPLACE FUNCTION getData(p_x IN sys.anyData) 
RETURN VARCHAR2 IS 
l_num  NUMBER; 
l_date  DATE; 
l_varchar2 VARCHAR2(4000); 
BEGIN 
    CASE p_x.gettypeName 
    WHEN 'SYS.NUMBER' THEN 
    IF (p_x.getNumber(l_num) = dbms_types.success) THEN 
     l_varchar2 := l_num; 
    END IF; 
    WHEN 'SYS.DATE' THEN 
    IF (p_x.getDate(l_date) = dbms_types.success) THEN 
     l_varchar2 := l_date; 
    END IF; 
    WHEN 'SYS.VARCHAR2' THEN 
    IF (p_x.getVarchar2(l_varchar2) = dbms_types.success) THEN 
     NULL; 
    END IF; 
    ELSE 
    l_varchar2 := '** unknown **'; 
    END CASE; 

    RETURN l_varchar2; 
END getData; 
/

http://psoug.org/browse.htm

+0

まあ...それは私が探していたものとは少し異なります。とにかくありがとう。 – vadimk