Plsql PLS-00306:调用'时参数的数量或类型错误;选择_';

Plsql PLS-00306:调用'时参数的数量或类型错误;选择_';,plsql,oracle11g,Plsql,Oracle11g,直接从编辑(蟾蜍)那里打电话就可以了。不知道为什么在反复检查函数定义和变量类型后出现上述错误。所有在线可用的信息似乎都是针对存储过程的,我认为这里没有使用存储过程 DECLARE TYPE attrs_type is VARRAY(10) of STRING(10); l_ldap_host VARCHAR(255) := 'SERVERNAME'; l_ldap_port INT := 389; l_ldap_user VARCHAR(255) := 'USERNAME'; l_ldap_pa

直接从编辑(蟾蜍)那里打电话就可以了。不知道为什么在反复检查函数定义和变量类型后出现上述错误。所有在线可用的信息似乎都是针对存储过程的,我认为这里没有使用存储过程

DECLARE
TYPE attrs_type is VARRAY(10) of STRING(10);
l_ldap_host VARCHAR(255) := 'SERVERNAME';
l_ldap_port INT := 389;
l_ldap_user VARCHAR(255) := 'USERNAME';
l_ldap_passwd VARCHAR(255) := 'PASSWORD';
l_ldap_base VARCHAR(255) := 'l=something,dc=something';
l_session DBMS_LDAP.session;
l_retval NUMBER;
l_entry VARCHAR(255);
l_attrs attrs_type;
l_message VARCHAR(255) := null;
l_filter VARCHAR(255) := 'objectclass=*';

BEGIN
l_session := DBMS_LDAP.init(hostname => l_ldap_host,
                             portnum => l_ldap_port);
l_retval := DBMS_LDAP.simple_bind_s(ld => l_session,
                                    dn => l_ldap_user,
                                passwd => l_ldap_passwd);
l_attrs(1) := '*'; -- retrieve all attributes                      
l_retval := DBMS_LDAP.search_s(
                             ld => l_session,
                             base => l_ldap_base,
                             scope => DBMS_LDAP.SCOPE_SUBTREE,
                             filter => l_filter,
                             attrs => l_attrs,
                             attronly => 0,
                             res => l_message);  
DBMS_OUTPUT.put_line(l_message);
-- code to do stuff                   
EXCEPTION
    WHEN OTHERS THEN DBMS_OUTPUT.put_line (SQLERRM);
END

您必须将
l\u attrs
定义为
dbms\u ldap.string\u collection
,而不是您自己的类型。即使您的类型是以相同的方式定义的,它也不能与另一个明显相似的类型互换。对于Oracle,您的
attrs\u类型
string\u集合
不同。因此,您将得到一个错误-您确实为该参数使用了错误的类型

:

包规范中定义的集合类型与相同定义的本地或独立集合类型不兼容


您必须将
l\u attrs
定义为
dbms\u ldap.string\u collection
,而不是您自己的类型。即使您的类型是以相同的方式定义的,它也不能与另一个明显相似的类型互换。对于Oracle,您的
attrs\u类型
string\u集合
不同。因此,您将得到一个错误-您确实为该参数使用了错误的类型

:

包规范中定义的集合类型与相同定义的本地或独立集合类型不兼容


谢谢,这就解决了。由于某些原因,暗示这种独特数据类型存在的文档非常稀少,但我现在知道我在寻找什么,所以能够找到一些。谢谢,这就解决了问题。出于某种原因,暗示这种独特数据类型存在的文档相当稀少,但我现在知道我在寻找什么,所以能够找到一些。