循环遍历行的子集,从特定行PL / SQL开始

时间:2016-01-03 02:33:15

标签: sql oracle plsql

有没有办法在PL / SQL中从特定行开始循环遍历表中的一部分行?
例如,我有一个20行的表,我想处理从第4行开始的所有行。在我完成一次迭代之后,我再次对表进行重新排序。

1 个答案:

答案 0 :(得分:1)

Oracle中没有这样的功能。但是有游标。它们非常棒,请查看herehere以获取更多详细信息。

如果您正在谈论PL / SQL,您可以轻松实现它。您需要担心的第一件事是您的查询的ORDER BY子句 - 如果您想要处理第4行中的行,您应该知道哪个顺序是正确的。

第二件事是如何计算前四行。你可以通过循环中的一些i计数器变量,或者直接在查询中进行(可能更快)。

下面是一些例子:

DECLARE
    CURSOR employees_in_10_cur
    IS
    SELECT 
        rownum,
        *
    FROM 
        employees
    WHERE 
        department_id = 10
    ORDER BY 
        employee_id
    ;
BEGIN
    FOR employee_rec IN employees_in_10_cur
    LOOP
        IF employee_rec.rownum >= 4 THEN
            -- Do something here
            DBMS_OUTPUT.put_line (employee_rec.employee_id);
        END IF;
    END LOOP;
END;

希望有所帮助。