首页 > 解决方案 > Oracle 中的光标与 FOR 循环

问题描述

所以我有一个 PLSQL 代码块,它将删除所有索引,如下面的代码块所示:

DECLARE
DRP_STMNT   VARCHAR2(100) := ''; 
BEGIN
    FOR I IN (SELECT INDEX_NAME FROM USER_INDEXES) LOOP
        DRP_STMNT := 'DROP INDEX ' || I.INDEX_NAME;
        EXECUTE IMMEDIATE DRP_STMNT;
    END LOOP;
END;
/

这将完成这项工作,但我应该使用游标而不是在 FOR LOOP 中嵌入我的 SELECT 语句吗?

FOR LOOP 是查看整个表还是一次处理一行?

你们建议使用什么,为什么?

标签: oraclefor-loopplsqlcursor

解决方案


结果将是一样的。

虽然,你会消耗更多的能量,因为你必须输入更多的字符,因为你必须声明一个游标和游标变量,打开一个游标,启动循环,从中获取,注意退出循环,关闭一个光标。

当您使用游标 FOR 循环时(就像您所做的那样),键入的次数要少得多,因为 Oracle 为您做了很多。免费。


推荐阅读