标签:使用 默认 exit tput lse 存在 记录 fir alt
--输出部门表的所有数据 declare --声明游标变量 cursor cur_dept is select * from dept; --声明行类型变量,用来接收游标获取到的数据 v_dept dept%rowtype; begin --打开游标 open cur_dept; loop --从游标中获取数据 fetch cur_dept into v_dept; -- 判断是否从游标中获取到了数据,如果没有获取数据跳出循环 --if cur_dept%notfound then -- exit; --end if; --if 可以简写成如下形成 exit when cur_dept%notfound; --打印数据 dbms_output.put_line(‘第‘||cur_dept%rowcount||‘行,部门编号:‘||v_dept.deptno||‘,部门名称:‘||v_dept.dname); end loop; --关闭游标 close cur_dept; end;
declare --声明游标变量 ,加入参数 cursor cur_emp(v_deptno number) is select * from emp where deptno=v_deptno; v_emp emp%rowtype; begin --打印部门编号为10的员工的信息 --打开游标 open cur_emp(10); loop fetch cur_emp into v_emp; exit when cur_emp%notfound; dbms_output.put_line(‘员工编号:‘||v_emp.empno||‘,员工姓名:‘||v_emp.ename); end loop; --关闭游标 close cur_emp; dbms_output.put_line(‘======‘); --打印部门编号为20的员工的信息 --打开游标 open cur_emp(20); loop fetch cur_emp into v_emp; exit when cur_emp%notfound; dbms_output.put_line(‘员工编号:‘||v_emp.empno||‘,员工姓名:‘||v_emp.ename); end loop; --关闭游标 close cur_emp; end;
declare --声明游标变量 ,加入参数 cursor cur_emp(v_deptno number) is select * from emp where deptno=v_deptno; --声明table类型 type emp_table_type is table of emp%rowtype index by binary_integer; -- 声明table类型变量 v_emp emp_table_type; begin --打印部门编号为10的员工的信息 --打开游标 open cur_emp(10); --一次性取出游标中的所有数据 ,放入table类型变量中 fetch cur_emp bulk collect into v_emp; --关闭游标 close cur_emp; --循环输出table类型变量中的内容 for v_i in v_emp.first .. v_emp.last loop dbms_output.put_line(‘员工编号:‘||v_emp(v_i).empno||‘,员工姓名:‘||v_emp(v_i).ename); end loop; end;
declare -- 声明游标变量 cursor cur_dept is select * from dept; begin -- 使用游标for循环不需要显式的打开或者关闭游标 -- 循环变量也不需要显式声明,该游标变量是行类型rowtype类型或者记录类型record for v_dept in cur_dept loop dbms_output.put_line(‘部门编号:‘||v_dept.deptno||‘,部门名称:‘||v_dept.dname); end loop; end;
begin -- 游标for循环简写 for v_dept in (select * from dept) loop dbms_output.put_line(‘部门编号:‘||v_dept.deptno||‘,部门名称:‘||v_dept.dname); end loop; end;
declare --声明游标变量类型 type cur_test_type is ref cursor; -- 声明cur_test_type类型的游标变量 cur_test cur_test_type; v_emp emp%rowtype; v_dept dept%rowtype; begin -- 先打印员工表所有数据 --打开游标,同时告诉该从哪个表取数据 open cur_test for select * from emp; loop fetch cur_test into v_emp; exit when cur_test%notfound; dbms_output.put_line(‘员工编号:‘||v_emp.empno||‘,员工姓名:‘||v_emp.ename); end loop; --关闭游标 close cur_test; --再使用cur_test游标变量从部门表取数据 open cur_test for select * from dept; loop fetch cur_test into v_dept; exit when cur_test%notfound; dbms_output.put_line(‘部门编号:‘||v_dept.deptno||‘,员工姓名:‘||v_dept.dname); end loop; --关闭游标 close cur_test; end;
begin delete from emp where empno=9999; --通过隐含游标判断是否删除成功 if sql%found then dbms_output.put_line(‘删除成功‘); else dbms_output.put_line(‘删除失败‘); end if; end;
标签:使用 默认 exit tput lse 存在 记录 fir alt
原文地址:https://www.cnblogs.com/duguangming/p/10848919.html