PLSQL:使用NUMBER类型的嵌套表的成员-PLS-00330:类型名称或子类型名称的无效使用

时间:2019-03-20 13:07:11

标签: oracle plsql

首次在plsql中使用集合。

嵌套表的声明:

TYPE nt_orders IS TABLE OF NUMBER 
INDEX BY BINARY_INTEGER;

nt_invc_orders nt_orders;

我在使用member of

的地方
    IF( 12345 member of nt_orders) THEN
        nt_scb_temp_objects(i).invc_ref := p_invc_ref;
    END IF;

注意:到目前为止,我已经输入12345作为搜索,实际上,这将是一个(数字类型的)变量存储值。

错误:PLS-00330:类型名称或子类型名称的无效使用

1 个答案:

答案 0 :(得分:3)

您的集合实际上不是嵌套表,而是一个关联数组。您应该删除INDEX BY BINARY_INTEGER;使其成为嵌套表。此外,MEMBER OF函数不适用于关联数组。第二个问题是您要搜索集合类型-nt_orders作为正确参数的元素,这是错误的。它应该是嵌套表变量。

declare
TYPE nt_orders IS TABLE OF NUMBER;
nt_invc_orders nt_orders := nt_orders(12345);

begin
    IF  12345 member of nt_invc_orders THEN
     dbms_output.put_line('found');
     else 
     dbms_output.put_line('not found');
    END IF;
end;
/

输出

found

PL/SQL procedure successfully completed.