如何正确使用Oracle 11g中的MEMBER OF功能

时间:2015-12-08 14:21:30

标签: arrays oracle plsql oracle11g

我有以下代码,每次执行时,都会收到错误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;

1 个答案:

答案 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