【问题标题】:Cursor For loop using subquery and Associative array?使用子查询和关联数组的游标循环?
【发布时间】:2015-02-02 03:36:21
【问题描述】:
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;

我没有理解那行的意思,这是什么赋值?

【问题讨论】:

  • 意思是:将变量rec的值(内容)赋值给数组v_by_cust_email中的一行(结构必须相同)。

标签: sql oracle plsql cursor associative-array


【解决方案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)

这将允许您在以后的处理中直接通过电子邮件地址在此数组中查找值,而无需查询数据库表或循环通过关联数组并将提供的电子邮件地址与数组中的电子邮件地址进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    相关资源
    最近更新 更多