PL / SQL不能按表将值放入索引中

时间:2015-06-04 09:52:10

标签: indexing plsql insert

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

emp_table(counter) := v_emp;

我得到的错误是:

  

无效使用子类型名称的类型名称

我无法看到问题所在..

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;
/

1 个答案:

答案 0 :(得分:0)

你的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"后缀为你的定义。