dbms_ldap实现ldap数据修改

另一个存储过程,实现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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值