13.9 LDAP_SEARCH_FILTERファンクション

LDAP_SEARCH_FILTERファンクションは、RFC 4515に従って、LDAP検索フィルタの予約文字をエスケープします。RFCでは、*()\/は予約文字であると説明されています(p_reserved_charsを参照)。これらの印字できない文字(ASCII 0 - 31)およびコード> 127を持つ文字(p_escape_non_asciiを参照)は、\xx(xxは16進文字コード)としてエスケープされます。

構文

APEX_ESCAPE.LDAP_SEARCH_FILTER (
    p_string              IN VARCHAR2,
    p_reserved_chars    IN VARCHAR2 DEFAULT c_ldap_search_reserved_chars,
    p_escape_non_ascii IN BOOLEAN DEFAULT TRUE )
    return VARCHAR2;

パラメータ

表13-10 LDAP_SEARCH_FILTERファンクションのパラメータ

パラメータ 説明

p_string

エスケープされるテキスト文字列。

p_reserved_chars

p_stringに含まれる場合に、\xxでエスケープされる文字のリスト(\xxは、文字のASCIIの16進コードを表します)。

p_escape_non_ascii

TRUEの場合、p_stringでASCII 127を超える文字は\xxでエスケープされます(xxは、その文字のASCIIの16進コードを表します)。これはRFC 4514でサポートされますが、古いLDAPサーバーおよびMicrosoft ADでは、エラーが発生することがあります。

この例では、l_nameのテキストをエスケープし、結果をl_escapedに移動します。

declare 
l_name varchar2(4000) := 'Joe*User'; 
l_escaped varchar2(4000); 
begin 
    l_escaped := apex_escape.ldap_search_filter(l_name); 
    htp.p(l_name||' becomes '||l_escaped); 
end;