我有以下代码,每次执行时,都会收到错误PLS-00306:调用'MEMBER OF'时参数的数量或类型错误。任何人都可以告诉我如何错误地使用此功能?如果不是,使用它的正确方法是什么?
如果我正确使用它,我还能如何检查数组的内容?
DECLARE
TYPE type_cd IS VARRAY(12) OF CHAR(2);
v_my_list type_cd ;
v_cd CHAR(2) := 'AA';
BEGIN
v_my_list := type_cd (v_cd);
IF v_cd MEMBER OF v_my_list
THEN
DBMS_OUTPUT.PUT_LINE(v_cd || ' is a member of v_my_list');
ELSE
DBMS_OUTPUT.PUT_LINE(v_cd || ' is NOT a member of v_my_list');
END IF;
END;
答案 0 :(得分:5)
来自Oracle的Support for Collection Datatypes页面:
MEMBER [OF]
或NOT MEMBER [OF]
条件测试元素是否是嵌套表的成员,并将结果作为布尔值返回。
MEMBER
比较适用于嵌套表而不是VARRAY
s。
更改VARRAY(12)
的{{1}},它会起作用:
TABLE
修改强>:
您可以使用一个简单的循环来检查成员是否存在于DECLARE
TYPE type_cd IS TABLE OF CHAR(2);
v_my_list type_cd ;
v_cd CHAR(2) := 'AA';
BEGIN
v_my_list := type_cd (v_cd);
IF v_cd MEMBER OF v_my_list
THEN
DBMS_OUTPUT.PUT_LINE(v_cd || ' is a member of v_my_list');
ELSE
DBMS_OUTPUT.PUT_LINE(v_cd || ' is NOT a member of v_my_list');
END IF;
END;
:
VARRAY