所以我有一个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;
/
那样就可以了,但是我应该使用游标而不是将SELECT语句嵌入到FOR LOOP中吗?
FOR LOOP是查看整个表还是一次处理一行?
你们建议使用什么,为什么?
答案 0 :(得分:2)
结果将是相同的。
尽管如此,您将消耗更多的精力,因为您必须输入更多的字符,因为您必须声明一个游标和游标变量,打开一个游标,开始循环,从中获取,并注意退出循环,关闭光标。
使用游标FOR循环(如您所做的那样)时,键入的内容要少得多,因为Oracle会为您执行很多操作。免费。