我在跟踪初始化为空Type(varchar2表)对象的数组时遇到问题。它位于一个循环中,并从我认为来自数据库的输出中输出索引。我已经用"作为varchar2"的表格完成了我的研究。我认为它只是表示一个以varchar作为类型的表的列。
根据我的理解," invArry"声明为类型" item_val"在" item_inv" header只是基本上意味着invArry是一个varchar,因为item_val是一个varchar吧?但是当我在item_inv体中时,我很困惑,invArry再次被初始化为item_val。它是否再次初始化为varchar?或者类型item_val是否已指向数据库中的列?如果是后者,我不确定它是如何指向数据库的。
create or replace TYPE "item_inv" AS OBJECT
(invArry item_val, --invArry declared as item_val
CONSTRUCTOR FUNCTION item_inv
RETURN SELF AS RESULT,
CONSTRUCTOR FUNCTION item_inv( recrd VARCHAR2 )
RETURN SELF AS RESULT,
) FINAL;
======
create or replace TYPE BODY "item_inv" AS
CONSTRUCTOR FUNCTION item_inv
RETURN SELF AS RESULT
IS
BEGIN
invArry := item_val --invArry initialized to item_val. Whut
RETURN;
END;
======
create or replace TYPE "item_val" AS TABLE OF VARCHAR2( 240 );
--item_val object, does this points already to the database or just an empty object
答案 0 :(得分:1)
您已将item_val
定义为a nested table集合。
在您的对象类型中invArry
属于该类型,因此它是一个嵌套表 - 即一个无序的字符串集合,每个字符串最多240个字符。
在您的对象类型正文中,您将invArry
初始化为空集合:
invArry := item_val();
它没有初始化为varchar,它初始化为一个空的嵌套varchars表。它不指向数据库中的任何数据,表或列。它是一个没有元素的集合。您现在可以编写代码来向该集合添加元素。这些值可能来自数据库中的其他位置,但没有自动链接。