40.7 SEARCHファンクション

SEARCHファンクションは、LDAPリポジトリを検索し、表問合せで使用可能な(DN、名前、値)のオブジェクト表を戻します。

構文

APEX_LDAP.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,
    p_credential_static_id IN VARCHAR2 DEFAULT NULL )
    RETURN apex_t_ldap_attributes pipelined;

パラメータ

パラメータ 説明
p_username 接続に使用するユーザー名(匿名バインドの場合はnullでも可)。
p_pass p_usernameのパスワード(匿名バインドの場合はnullでも可)。
p_auth_base p_usernameの認証ベースDN (匿名バインドの場合はnullでも可)
p_host LDAPサーバーのホスト名。
p_port LDAPサーバーのポート(デフォルトは389)。
p_use_ssl SSL接続が必要な場合はYにします(デフォルトはN)。
p_search_base 検索用のdnベース。
p_search_filter LDAP検索フィルタ式。
p_scope 検索範囲(デフォルトでは、サブツリーに下降)。
p_timeout_sec 検索のタイムアウト(デフォルトは3秒)。
p_attribute_names 戻り属性名のカンマ区切りのリスト。
p_credential_static_id 資格証明の静的ID (匿名バインド、またはユーザー名とパスワードのバインドの場合は、nullでも可)。nullではなく、資格証明が見つからなかった場合は、エラーno_data_foundが発生します。

例1

SELECT val group_dns
  FROM table(apex_ldap.search (
           p_host            => 'ldap.example.com',
           p_port            => '636',
           p_use_ssl         => 'A',
           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_port            => '636',
                          p_use_ssl         => 'A',
                          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 ))