PL/SQL 无法通过 table 将值放入索引

PL/SQL can't put value into index by table

我无法将 v_emp 的值放入我的 emp_table。 这行全都出错了:

emp_table(counter) := v_emp;

我得到的错误是:

invalid use of type name of subtype name

我看不出是什么问题..

CREATE OR REPLACE PROCEDURE laatste_emp IS
    v_emp   employees%ROWTYPE;
    TYPE emp_table is table of 
    employees%ROWTYPE INDEX BY PLS_INTEGER;
    counter NUMBER := 0;
BEGIN
    select * into v_emp
    from employees
    where hire_date =
    (select max(hire_date) from employees);
    dbms_output.put_line(v_emp.employee_id || ' ' || v_emp.last_name || ' ' || v_emp.hire_date);
EXCEPTION 
    WHEN TOO_MANY_ROWS THEN
        FOR i in 100 .. 206 LOOP
            select * into v_emp
            from employees 
            where employee_id = i
            and hire_date = (select max(hire_date) from employees);
            IF SQL%FOUND THEN
                emp_table(counter) := v_emp;
                counter := counter + 1;
            END IF;
        END LOOP;
END;
/

您的 TYPE emp_table is table of employees%ROWTYPE INDEX BY PLS_INTEGER; 仅声明了一个类型,而不是您可以写入的实际变量。您还需要添加变量:

TYPE emp_table_type is table of employees%ROWTYPE INDEX BY PLS_INTEGER;
emp_table emp_table_type;

请注意我在您的定义中添加了“_type”后缀。