文档解释
ORA-31215: DBMS_LDAP: PL/SQL – Invalid LDAP mod value.
Cause: There has been an error in the DBMS_LDAP populate_mod_array operation.
Action: Please check the LDAP mod value that you use for LDAP populate_mod_array operation, or report the error number and description to Oracle Support.
ORA-31215错误
Oracle ORA-31215错误是指在使用DBMS_LDAP包中的PL/SQL程序时,用户输入的LDAP模式值无效。DBMS_LDAP包提供一个非常强大的API,它可以让开发人员将PL/SQL程序集成到其标准LDAP实现中。LDAP模式是更改LDAP实体的属性的一种变更方式。这里某些属性的模式,比如“添加”,“删除”和“替换”,将使用整数范围从1到3来提供。 如果用户没有指定正确的整数值,就会发生ORA-31215错误。
错误说明
ORA-31215错误表明用户输入了无效的LDAP MOD值。 LDAP MOD值是使用DBMS_LDAP包中提供的modify_s及modify_s_nb函数时,必须传递给参数ldap_modlist的模式,它用于表示所请求的LDAP操作,其中1表示添加,2表示删除,3表示替换。如果用户输入的值不在1~3的范围内,就会引发ORA-31215错误。
常见案例
常见案例
加入以下代码以尝试更新LDAP记录:
BEGIN
DBMS_LDAP.modify_s(
ld => ldap_conn,
dn => ‘cn=user1,dc=example,dc=com’,
modlist => ldap_modlist(
ldap_mod_replace,
‘sn’,
‘Smith’));
END;
然而,用户误认为modlist参数值必须 是3,而没有使用ldap_mod_replace参数来替换原始值。于是,用户有可能更改代码如下:
BEGIN
DBMS_LDAP.modify_s(
ld => ldap_conn,
dn => ‘cn=user1,dc=example,dc=com’,
modlist => ldap_modlist(
3,
‘sn’,
‘Smith’));
END;
这将导致ORA-31215错误,因为3是不接受的LDAP MOD值。
解决方法
要解决ORA-31215错误,请仔细检查代码,确保使用正确的LDAP MOD值及参数来执行所需的任务。如果没有,请加入正确的参数和参数值,重新运行PL/SQL程序。例如,回到上面的示例中,你应该替换为下面的代码:
BEGIN
DBMS_LDAP.modify_s(
ld => ldap_conn,
dn => ‘cn=user1,dc=example,dc=com’,
modlist => ldap_modlist(
ldap_mod_replace,
‘sn’,
‘Smith’));
END;