oracle - 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 是查看整个表还是一次处理一行?
你们建议使用什么,为什么?
解决方案
结果将是一样的。
虽然,你会消耗更多的能量,因为你必须输入更多的字符,因为你必须声明一个游标和游标变量,打开一个游标,启动循环,从中获取,注意退出循环,关闭一个光标。
当您使用游标 FOR 循环时(就像您所做的那样),键入的次数要少得多,因为 Oracle 为您做了很多。免费。
推荐阅读
- scala - Scala 3 中的类型级“IsPermutation”匹配类型
- html - 如何在同一 td 和同一行中显示 Checkbox 和 Input 元素
- visual-studio-code - Prettier Code Formatter 与 VSCode 中的默认代码格式化程序有何不同?
- clojure - 当查询关于所有属性时,Datomic 会隐藏部分历史记录
- python - SQLAlchemy 返回具有相同主键的数据计数
- bash - 为什么 bash 会吞下字符
- javascript - “const”外部组件和“static”内部组件之间的区别?
- amazon-dynamodb - DynamoDB 如何将嵌套列表保存为属性
- c - 在C中直接为变量赋值是否安全?
- pandas - 保存时熊猫特殊字符转换为奇怪的字符