DECLARE -- 定义游标 CURSOR cur ISSELECT empno, ename FROM emp; BEGIN -- 遍历游标并输出结果 FOR i IN cur LOOP DBMS_OUTPUT.PUT_LINE('编号: '|| i.empno ||' 姓名: '|| i.ename); END LOOP; END; /
DECLARE -- 定义游标 CURSOR cur ISSELECT deptno, dname FROM dept; BEGIN -- 遍历游标并更新部门名称 FOR i IN cur LOOP UPDATE emp SET dname = i.dname WHERE deptno = i.deptno; END LOOP; COMMIT; -- 提交事务 END; /
DECLARE BEGIN -- 插入 100 条数据 FOR i IN1..100 LOOP INSERTINTO emp (empno, ename, sal) VALUES (seq_employee.NEXTVAL, 'Employee'|| i, DBMS_RANDOM.VALUE(1000, 5000)); END LOOP; COMMIT; -- 提交事务 END; /
-- 删除测试数据 DELETEFROM emp WHERE empno LIKE'_'OR empno LIKE'__';
6. 写一个语句块,在语句块中定义一个显式游标,按 id 升序排列,打印表 employee 中前十条数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DECLARE -- 定义游标 CURSOR cur ISSELECT*FROM emp ORDERBY empno; v_count NUMBER :=0; -- 计数器 BEGIN -- 遍历游标并输出前十条数据 FOR i IN cur LOOP v_count := v_count +1; IF v_count <=10THEN DBMS_OUTPUT.PUT_LINE('姓名: '|| i.ename ||' 编号: '|| i.empno); ELSE EXIT; -- 退出循环 END IF; END LOOP; END; /