24.7 SEARCHファンクション

SEARCHファンクションは、LDAPリポジトリを検索します。結果は、表問合せで使用できるオブジェクト表の(dn, name, val)です。

構文

function search (
   	    p_username          IN VARCHAR2 DEFAULT NULL,
   	    p_pass              IN VARCHAR2 DEFAULT NULL,
   	    p_auth_base         IN VARCHAR2 DEFAULT NULL,
   	    p_host              IN VARCHAR2,
   	    p_port              IN NUMBER DEFAULT 389,
   	    p_use_ssl           IN VARCHAR2 DEFAULT 'N',
   	    p_search_base       IN VARCHAR2,
   	    p_search_filter     IN VARCHAR2,
   	    p_scope             IN BINARY_INTEGER DEFAULT SYS.DBMS_LDAP.SCOPE_SUBTREE,
   	    p_timeout_sec       IN BINARY_INTEGER DEFAULT 3,
   	    p_attribute_names   IN VARCHAR2 )
   	    RETURN APEX_T_LDAP_ATTRIBUTES PIPELINED;

パラメータ

表24-7 SEARCHのパラメータ

パラメータ 説明

p_username

ユーザーのログイン名(匿名バインドの場合はNULLでもかまいません)。

p_pass

p_usernameのパスワード(匿名バインドの場合はNULLでもかまいません)

p_auth_base

p_usernameの認証ベースdn(dc=users、dc=my、dc=orgなど)。匿名バインドの場合はNULLでもかまいません。

p_host

LDAPサーバー・ホスト名。

p_port

LDAPサーバーのポート番号。

p_use_ssl

LDAPサーバーへのバインドでSSLを使用する場合は'Y'を設定します。一方向認証(Oracleウォレットで構成されるLDAPサーバー証明書が必要)でSSLを使用する場合は'A'を設定します。SSLを使用しない場合は'N'を設定します(デフォルト)。

p_search_base

検索用のdnベース。

p_search_filter

LDAP検索フィルタ式。

p_scope

検索範囲(デフォルトはサブツリーに下降)。

p_timeout_sec

検索のタイムアウト(デフォルトは3秒)

p_attribute_names

戻り属性名のカンマ区切りのリスト

例1

SELECT val group_dns
  FROM table(apex_ldap.search (
           p_host            => 'ldap.example.com',
           p_search_base     => 'dc=example,dc=com',
           p_search_filter   => 'uid='||apex_escape.ldap_search_filter(:APP_USER),
           p_attribute_names => 'memberof' ));

例2

SELECT dn, mail, dispname, phone
  from ( select dn, name, val
           from table(apex_ldap.search (
                          p_host            => 'ldap.example.com',
                          p_search_base     => 'dc=example,dc=com',
                          p_search_filter   => '&(objectClass=person)(ou=Test)',
                          p_attribute_names => 'mail,displayname,telephonenumber' )))
  pivot (min(val) for name in ( 'mail'            mail,
                                'displayname'     dispname,
                                'telephonenumber' phone ))