另一个存储过程,实现ldap数据的修改,具体各步骤含义已经在前面一篇中说明了,这里跟前面不同之处主要就是调用的函数不同了:前面是add_s(),这里是modify_s():
create or replace procedure w_proc_ldapmodify(ldap_host varchar2,
ldap_port varchar2 default '389',
ldap_user varchar2 default 'cn=manager',
ldap_passwd varchar2 default '123456',
ldap_userdn varchar2, --指定要修改的节点
mod_attr varchar2, --指定要修改的属性
mod_values varchar2 --指定修改后的值
) as
l_ldap_host varchar2(256) := ldap_host; --'218.108.243.40';
l_ldap_port varchar2(256) := ldap_port; --'389';
l_ldap_user varchar2(256) := ldap_user; --'cn=manager';
l_ldap_passwd varchar2(256) := ldap_passwd; --'onewaveinc';
l_retval pls_integer;
l_session dbms_ldap.session;
l_message dbms_ldap.message;
l_mod_vals dbms_ldap.string_collection;
l_array dbms_ldap.MOD_ARRAY;
v_mod_attr VARCHAR(256) := mod_attr;
begin
dbms_ldap.use_exception := true;
l_mod_vals(1) := mod_values;
if ldap_host in('218.108.236.24','218.108.236.27', '218.108.236.29', '218.108.236.30') then
dbms_output.put_line('Slave LDAP could not be midified!'); --
return;
end if;
begin-- connect to the ldap server.
l_session := dbms_ldap.init(l_ldap_host, l_ldap_port);
l_retval := dbms_ldap.simple_bind_s(l_session, l_ldap_user, l_ldap_passwd);
exception when others then
dbms_output.put_line('coerr');
return;
end;
--修改数据
l_array := dbms_ldap.create_mod_array(1);
dbms_ldap.populate_mod_array(l_array,
dbms_ldap.mod_replace,
v_mod_attr,
l_mod_vals);
l_retval := dbms_ldap.modify_s(l_session, ldap_userdn, l_array);
dbms_ldap.free_mod_array(l_array);
-- 断开与ldap的连接
l_retval := dbms_ldap.unbind_s(ld => l_session);
end w_proc_ldapmodify;
/*关于以上参数的说明
修改节点 "cn=tigger,cn=users,dc=acme,dc=o "的userpassword和newmail属性.
DBMS_LDAP.populate_mod_array(my_mod, DBMS_LDAP.MOD_REPLACE, 'mail ', my_values);
my_mod存储的对ldap的操作,如上面这句话的意思是 "对mail属性使用my_values的值做替换操作 ",因为ldap的属性值可以是数组,所以是DBMS_LDAP.STRING_COLLECTION类型,然后同样对userpassword属性也是类似操作,最后
retval := DBMS_LDAP.modify_s(my_session, userDN, my_mod);
在节点userDN上执行my_mod中的操作
*/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-566585/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12932950/viewspace-566585/