Oracle 中的游标与 FOR 循环

Cursor vs FOR Loop in Oracle

所以我有一个 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 循环中嵌入我的 SELECT 语句吗?

FOR 循环是查看整个 table 还是一次只处理一行?

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

结果是一样的。

不过,您会消耗更多能量,因为您必须输入更多字符,因为您必须声明一个游标和游标变量,打开一个游标,开始循环,从中获取,注意退出循环,关闭游标。

当您使用游标 FOR 循环(就像您所做的那样)时,输入的内容会少得多,因为 Oracle 会为您完成很多工作。免费。