"按表索引"和"按记录表索引"之间有什么区别?

Mar*_*rty 2 sql oracle plsql

我遇到过这两个术语,但它们听起来是同义词.这两者有区别吗?

eao*_*son 6

"索引表"是Oracle关于"关联数组"的术语.这些是包含可以解析(或索引)整数或字符串的元素的数组.它们之所以被称为是因为在定义数组时使用了INDEX BY关键字.

Oracle文档中给出的示例的缩写:

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');
  ...
Run Code Online (Sandbox Code Playgroud)

您可以创建包含记录的索引表,其中记录本质上是包含多个类型的结构.例如,记录通常包含与表中的行相同的类型.

再次,从Oracle文档:

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;
Run Code Online (Sandbox Code Playgroud)

这里,emp_tab是一个索引表,由整数索引,包含员工%ROWTYPE的记录.