26.19 LDAP_DNファンクション

LDAP_DNファンクションは、RFC 4514に従って、LDAP識別名の予約文字をエスケープします。RFCでは、"+,;<=>\は予約文字であると説明されています(p_reserved_charsを参照)。これらは、バックスラッシュによってエスケープされます(「becomes \」など)。印字できない文字ASCII 0 - 31およびコード127を超える文字(p_escape_non_asciiを参照)は、\xx(xxは16進文字コード)としてエスケープされます。文字列の先頭または末尾のスペース文字および先頭の#も、バックスラッシュでエスケープされます。

構文

APEX_ESCAPE.LDAP_DN (
    p_string            IN VARCHAR2,
    p_reserved_chars    IN VARCHAR2 DEFAULT c_ldap_dn_reserved_chars,
    p_escaped_non_ascii IN BOOLEAN  DEFAULT TRUE )
RETURN VARCHAR2;

パラメータ

パラメータ 説明
p_string エスケープされるテキスト文字列。
p_reserved_chars p_stringに含まれる場合に、バックスラッシュでエスケープされる文字のリスト。
p_escaped_non_ascii TRUEの場合、p_stringでASCII 127を超える文字はバックスラッシュでエスケープされます。これはRFC 4514およびRFC 2253でサポートされますが、古いLDAPサーバーおよびMicrosoft ADでは、エラーが発生することがあります。

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

DECLARE
    l_name varchar2(4000) := 'Joe+User';
    l_escaped varchar2(4000);
BEGIN
    l_escaped := apex_escape.ldap_dn(l_name);
    htp.p(l_name||' becomes '||l_escaped);
END;