Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Access Active Directory data with a view
Dear Sybrand,
Thanks for your suggestions. I'm working on Oracle 10i. I've altered my original script. The results seem to be okay. Would you be so kind to comment on my alterations, since I'm not familiar with PL/SQL?
create or replace type o_gebrnm_regnr as object (
gebrnm varchar2(15),
regnr varchar2(9)
)
/
create or replace type t_gebrnm_regnr as table of o_gebrnm_regnr /
create or replace function f_gebrnm_regnr return t_gebrnm_regnr
pipelined
as
l_ldap_host VARCHAR2(256) := 'xxx'; l_ldap_port VARCHAR2(256) := '389'; l_ldap_user VARCHAR2(256) := 'xxx'; l_ldap_passwd VARCHAR2(256) := 'xxx'; l_ldap_base VARCHAR2(256) := 'xxx'; l_filter VARCHAR2(256) := 'sAMAccountName=T*'; -- Alleenuserid's die beginnen met de letter T
l_retval PLS_INTEGER; l_session DBMS_LDAP.session; l_attrs DBMS_LDAP.string_collection; l_message DBMS_LDAP.message; l_entry DBMS_LDAP.message; l_attr_name VARCHAR2(256); l_ber_element DBMS_LDAP.ber_element; l_vals DBMS_LDAP.string_collection;
a_gebrnm_regnr o_gebrnm_regnr := o_gebrnm_regnr(null,null); begin
l_retval := DBMS_LDAP.simple_bind_s(ld => l_session, dn => l_ldap_user, passwd => l_ldap_passwd);
IF DBMS_LDAP.count_entries(ld => l_session, msg => l_message) > 0 THEN
<< entry_loop >>
WHILE l_entry IS NOT NULL LOOP
IF l_attr_name='sAMAccountName' THEN a_gebrnm_regnr.gebrnm := substr(l_vals(i),1,15); ELSIF l_attr_name='employeeNumber' THEN a_gebrnm_regnr.regnr := substr(l_vals(i),1,9); END IF; END LOOP values_loop; l_attr_name := DBMS_LDAP.next_attribute(ld => l_session, ldapentry => l_entry, ber_elem => l_ber_element); END LOOP attibutes_loop; pipe row (a_gebrnm_regnr); a_gebrnm_regnr := o_gebrnm_regnr(null,null); l_entry := DBMS_LDAP.next_entry(ld => l_session, msg => l_entry);
END LOOP entry_loop;
END IF;
return;
end;
/
create or replace view v_ActiveDirectory as select * from table(cast(f_gebrnm_regnr() as t_gebrnm_regnr)); Received on Tue Aug 15 2006 - 09:38:17 CDT