CREATE OR REPLACE PROCEDURE report_credit
(p_email customers.cust_last_name%TYPE,
p_credit_limit customers.credit_limit%TYPE)
IS
TYPE typ_name IS TABLE OF customers%ROWTYPE
INDEX BY customers.cust_email%TYPE;
v_by_cust_email typ_name;
i VARCHAR2(30);
PROCEDURE load_arrays IS
BEGIN
FOR rec IN (SELECT * FROM customers
WHERE cust_email IS NOT NULL) LOOP
v_by_cust_email (rec.cust_email) := rec;
END LOOP;
END;
v_by_cust_email(rec.cust_email):= rec;
我没有得到那条线的含义,它是什么类型的任务?
答案 0 :(得分:1)
这是在客户电子邮件地址索引或键入的内存中创建关联数组 - 键,值对。数组的值是与customers表中的行结构相同的记录,例如。
v_cust_by_email('joe.bloggs@anisp.com') = customer('Joe', 'Bloggs', 100.00)
v_cust_by_email('john.doe@anotherisp.com') = customer('John', 'Doe', 500.00)
v_cust_by_email('jane.doe@anotherisp.com') = customer('Jane', 'Doe', 250.00)
这将允许您在以后的处理中直接通过电子邮件地址查找此数组中的值,而无需查询数据库表或循环关联数组并将提供的电子邮件地址与数组中的电子邮件地址进行比较。