【发布时间】:2015-04-21 00:04:39
【问题描述】:
我正在尝试帮助我的朋友完成 Oracle 作业,但他遇到了以下问题:
如果博客 id 小于 4,则使用游标 FOR 循环检索博客 ID、博客 url 和博客描述,并将其放在游标变量中。获取并处理每条记录,并在表日志中为返回的每个博客 id 插入一行。
我们发现很难理解,但我们有查询:
DECLARE
CURSOR blog_cursor IS SELECT * FROM blog;
BEGIN
FOR blog_item IN blog_cursor LOOP
IF( blog_item.blog_id > 4 ) THEN
-- Insert a row in the "table log"
INSERT INTO log( log_id, log_url, log_desc )
VALUES( blog_item.blog_id, blog_item.blog_url, blog_item.blog_desc );
END IF;
END LOOP;
END;
/
表:
blog
blog_id
blog_url
blog_desc
查询完成了这项工作,但它不使用 FETCH 关键字,因此我们认为它在技术上不正确。这个问题似乎写得不好,但是您将如何使用 FETCH 关键字来回答它?我是 PL/SQL 新手,但我有使用 SQL 的经验。
【问题讨论】:
-
INSERT INTO log( log_id, log_url, log_desc ) SELECT blog_id, blog_url, blog_desc FROM blog WHERE blog_id > 4;似乎比使用游标简单得多——尽管它也不使用FETCH。 -
我同意,这门课程的老师似乎很懒惰。