我正在尝试在Oracle / PLSQL中执行某些操作,我希望通过游标从数据库中选择一些内容并将其存储到行数组中,我可以在以后处理这些行。搜索谷歌但无济于事。将在这里感谢任何帮助。
我的想法
答案 0 :(得分:7)
看看PL/SQL Collections。您可以创建PL / SQL记录的集合,其中记录定义为表的%ROWTYPE。然后你加载该表&对它进行操作。
例如:
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, employee_name from employees;
TYPE employeeArrayType IS TABLE OF a_cur%ROWTYPE;
employeeArray employeeArrayType;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor BULK COLLECT INTO employeeArray LIMIT 100;
EXIT WHEN emp_cursor%NOTFOUND;
END LOOP;
CLOSE emp_cursor;
-- Now you can do work with employeeArray
END;
代码声明我的光标和集合,然后在循环中使用FETCH..BULK COLLECT进程加载集合(建议使用大量数据)。
然而,Codo的评论适用于此 - 如果您将数据作为WHERE子句的一部分进行过滤和排序,则会更容易。 SQL查询的ORDER BY子句。如果你有一个数据库引擎,那么在很少的情况下,用过程语言进行集合操作会更好。一些ETL过程可能需要它,但对于您的问题,我真的建议您在SQL中使用最终结果集进行工作。
话虽如此,对PL / SQL记录集合进行排序并不像人们想象的那么容易。有关对集合进行排序的方法的概述,请查看AMIS technology blog(和here第2部分)。