我有一个对游标返回的所有记录执行一些计算的过程。它看起来有点像这样:
PROCEDURE do_calc(id table.id_column%TYPE)
IS
CURSOR c IS
SELECT col1, col2, col3
FROM table
WHERE ...;
BEGIN
FOR r IN c LOOP
-- do some complicated calculations using r.col1, r.col2, r.col3 etc.
END LOOP;
END;
现在,我需要对来自不同表的不同记录集执行完全相同的计算。但是,它们具有与上述示例相同的“形状”。
是否可以编写如下所示的过程:
PROCEDURE do_calc2(c some_cursor_type)
IS
BEGIN
FOR r IN c LOOP
-- do the calc, knowing we have r.col1, r.col2, r.col3, etc.
END LOOP;
END;
我知道SYS_REFCURSOR
,但我想知道是否可以使用更方便的FOR ... LOOP
语法和隐式记录类型。