我遇到过两个术语,但它们听起来是同义词。这两者有区别吗?
答案 0 :(得分:6)
“索引表”是Oracle的“关联数组”术语。这些是包含可以解析(或索引)整数或字符串的元素的数组。由于在定义数组时使用了INDEX BY关键字,因此可能会调用它们。
中给出的示例的缩写DECLARE
TYPE population_type IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
country_population population_type;
howmany NUMBER;
BEGIN
country_population('Greenland') := 100000; -- Creates new entry
howmany := country_population('Greenland');
...
您可以创建包含记录的索引表,其中记录本质上是包含多个类型的结构。例如,记录通常包含与表中的行相同的类型。
再次,来自Oracle documentation:
DECLARE
TYPE EmpTabTyp IS TABLE OF employees%ROWTYPE
INDEX BY PLS_INTEGER;
emp_tab EmpTabTyp;
BEGIN
/* Retrieve employee record. */
SELECT * INTO emp_tab(100) FROM employees
WHERE employee_id = 100;
END;
这里,emp_tab是一个索引表,由整数索引,包含员工%ROWTYPE的记录。
答案 1 :(得分:2)
我不确定你从哪里获得短语,但TABLE OF
和INDEX BY
是集合类型声明的独立部分。 TABLE OF
定义集合字段的类型,可以是数据类型(即TABLE OF NUMBER
)或记录类型(即TABLE OF MY_TABLE%TYPE
)。
INDEX BY
指的是查找此集合的方法,几乎就像一个键值对。例如,我可以使用INDEX BY VARCHAR2(10)
,以便我可以使用文本键从集合类型中检索值。
以下是插图:
DECLARE
TYPE my_type IS TABLE OF NUMBER INDEX BY VARCHAR2(10);
n_my_value NUMBER;
BEGIN
my_type ('the key') := 99;
n_my_value := my_type ('the key');
END;
/
答案 2 :(得分:0)
按表索引是用户定义的数据类型,用于存储多个数据项。基本上这些表是不受约束的表。按表分列有两部分,这些是值字段和键字段。在值字段中,oracle服务器存储实际数据,其中在关键字段oracle服务器存储索引时,这就是为什么索引按表具有“键值”对,并且索引也是默认整数,并且这些索引在负数到正数之间。此索引字段的行为类似于主键,它不接受重复值。 通常使用表索引来提高性能或应用程序,因为这些表存储在内存区域中,这就是为什么这些表也称为内存表。 通常为了提高应用程序的性能,这些表索引都使用'二进制整数'数据类型,因此我们分两步创建。首先我们创建类型,然后我们只创建该类型的变量。
语法: -
步骤1: - 类型typename是binary_integer的数据类型(大小)索引表; 第2步: - 变量名类型名称;
更多信息>>>> http://www.oraappdata.com/2017/02/plsql-index-by-tables-or-plsql-tables-or-associative-arrays.html