首次在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:类型名称或子类型名称的无效使用
答案 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.