我当前的方法类似于
var_row_output tablename%rowtype;
cursor main_cur IS
SELECT id
FROM tablename;
BEGIN
FOR rec in main_cur LOOP
SELECT *
INTO var_row_output
FROM tablename
WHERE id= rec.id;
-- do stuff
End Loop;
END;
选择像
这样的东西会更好吗?var_row_output tablename%rowtype;
cursor main_cur IS
SELECT *
FROM tablename;
BEGIN
LOOP
FETCH main_cur into var_row_output;
EXIT WHEN main_cur%NOTFOUND;
--do stuff
END LOOP;
END;
我们一般在我的工作场所采用第一种方法来处理游标。我很好奇是否有这样的表现受到打击?哪种方式更可取?
答案 0 :(得分:2)
在第一个示例中,您在循环的每次迭代中执行额外的select
,这可能会在一定程度上影响性能。此外,在第二个示例中,代码更简洁。但我也更喜欢使用隐式游标的for
循环,如下所示:
begin
for myrow in (select * from tablename) loop
null; -- do stuff with myrow
end loop;
end;