【发布时间】:2018-02-06 11:45:40
【问题描述】:
所以我有一个我正在工作的项目,我注意到很多人使用 INSERT INTO SELECT 方法:
INSERT INTO candy_tbl (candy_name,
candy_type,
candy_qty)
SELECT food_name,
food_type,
food_qty
FROM food_tbl WHERE food_type = 'C';
但是,我使用以下游标方法:
FOR rec IN ( SELECT
food_name,
food_type,
food_qty
FROM food_tbl WHERE food_type = 'C')
LOOP INSERT INTO candy_tbl(candy_name,
candy_type,
candy_qty)
VALUES(rec.food_name,
rec.food_type,
rec.food_qty)
END LOOP;
这将进入一个 PL/SQL 包。我的问题是,这通常是“首选”方法,什么时候?我通常选择游标方法,因为它在异常处理方面给了我更多的灵活性。但是,我可以看到插入大量记录时这可能是一个性能问题。
【问题讨论】:
-
第一个效率更高。当您可以编写 SQL 查询来完成任务时,您必须使用游标
-
@JoeTaras 我想你的意思是说“不应该”而不是“必须”?
-
@TonyAndrews:是的,重要的是尝试创建正确的 SQL 查询。作为替代解决方案的游标(因为效率低于查询)
标签: oracle plsql plsqldeveloper