我无法将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;
/
答案 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"后缀为你的定义。