cursor_loop

DECLARE
CURSOR XX IS
SELECT * FROM NOTEBOOK;
ROWINDEX VARCHAR2(30);
BEGIN
FOR ENTRYROW IN XX LOOP
ROWINDEX := (XX%ROWCOUNT);
UPDATE NOTEBOOK
   SET USERNAME   = 'USERNAME' || ENTRYROW.NID,
       USEREMAIL  = 'USERMAIL' || ENTRYROW.NID,
       TITLE      = 'TITLE' || ENTRYROW.NID,
       CREATEDATE = SYSDATE,
       CONTENT    = 'CONTENT' || ENTRYROW.NID,
       REPLY      = 'REPLY' || ENTRYROW.NID
 WHERE NID = ROWINDEX;
DBMS_OUTPUT.PUT_LINE(XX%ROWCOUNT);
END LOOP;
COMMIT;
END;
任务描述 本关任务:创建存储过程 ,在存储过程中定义游标计算总学分。 相关知识 为了完成本关任务,你需要掌握: 1.游标的定义; 2.游标的使用。 游标的定义 游标(Cursor)主要用于存储过程和函数中,用于逐行处理查询结果集。 在存储过程或函数中,使用 DECLARE CURSOR 语句来创建游标。 DECLARE cursor_name CURSOR FOR select_statement; 游标的使用 打开游标 OPEN cursor_name; 获取数据 FETCH cursor_name INTO var_name1, var_name2, ...; 关闭游标 CLOSE cursor_name; 举例:通过游标获取users表中的id,name,并输出结果。 DELIMITER // CREATE PROCEDURE process_users() BEGIN -- 声明变量 DECLARE finished INTEGER DEFAULT 0; DECLARE user_id INT DEFAULT 0; DECLARE user_name VARCHAR(50) DEFAULT ''; -- 声明游标 DECLARE my_cursor CURSOR FOR SELECT id, name FROM users; -- 声明结束处理 DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1; -- 打开游标 OPEN my_cursor; -- 获取数据 fetch_loop: LOOP FETCH my_cursor INTO user_id, user_name; IF finished = 1 THEN LEAVE fetch_loop; END IF; -- 处理每一行数据 SELECT user_id, user_name; END LOOP; -- 关闭游标 CLOSE my_cursor; END // DELIMITER ; 编程要求 根据提示,在右侧编辑器补充代码,创建存储过程 p_count_credit,在存储过程中创建游标stucur保存所有学生的学号,使用loop循环从游标中提取每个学生的学号,根据当前学号调用count_credit 函数计算学生的总学分,并更新学生表中的总学分值。 测试说明 平台会对你编写的代码进行测试,将调用你编写的存储过程p_count_credit,函数的count_credit的功能和第2关中的相同,具体输出请参考右侧测试集。
最新发布
11-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值