【问题标题】:PLSQL : Using Member of with Nested Table of type NUMBER - PLS-00330: invalid use of type name or subtype namePLSQL:使用类型为 NUMBER 的嵌套表的成员 - PLS-00330:类型名称或子类型名称的无效使用
【发布时间】:2019-03-20 13:07:11
【问题描述】:

第一次在 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:类型名称或子类型名称的使用无效

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    您的集合实际上不是一个嵌套表,它是一个关联数组。您应该删除 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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2014-07-25
      相关资源
      最近更新 更多