我有一名员工。下面的查询返回一条记录,想要将它存储在一个列表中,以便后者在i上可以迭代它并获取值。
select employee_name,employee_surname from employee where emp_id = '123';
类似
select employee_name,employee_surname bulk collect into list_emp from employee where emp_id = '123';
.
.
FOR indx IN 1 .. list_emp.count
LOOP
<other sqls>
END LOOP;
答案 0 :(得分:0)
这可以通过声明记录的包级别集合来完成。
CREATE OR REPLACE PACKAGE pkg_emp_rec AS
TYPE emp_rec IS RECORD ( employee_name employee.employee_name%TYPE,
employee_surname employee.employee_surname%TYPE );
TYPE list_emptype IS
TABLE OF emp_rec;
list_emp list_emptype;
END pkg_emp_rec;
接下来,您可以在任何您想要的块/程序中存储和检索此集合。
SET SERVEROUTPUT ON
BEGIN
SELECT
employee_name,
employee_surname
BULK COLLECT INTO
pkg_emp_rec.list_emp
FROM
employee;
FOR indx IN 1..pkg_emp_rec.list_emp.count
LOOP
dbms_output.put_line(pkg_emp_rec.list_emp(indx).employee_name);
END LOOP;
END;
/
注意:当您的表格数据很大时,建议不要这样做。从集合中获取数据库表总是更好。只把它作为你作业的解决方案。
另一种方法是将员工姓名存储为嵌套表格列,我将其作为作业提供。