游标

**游标:
用来处理使用select语句从数据库中检索到的多行记录的工具**
分类:
1. 显示游标;返回多条记录时,使用显示游标逐行读取。
2. 隐式游标;PL/SQL自动为DML语句创建隐式游标,包含一条返回记录。
游标的使用
1) 游标的声明
语法:
CURSOR cursor_name [ ( parameter [ , parameter]……)]
[ RETURN return_type ] IS selectsql
说明:
CURSOR:用于声明一个游标
parameter:可选参数,用于指定参数类型、模式等
return:可选,指定游标的返回类型
selectsql:需要处理的select语句,不能含INTO子句
2)打开游标
语法: open test_cursor 使用OPEN语句开启一个游标
3)提取游标
语法:
FETCH cursor_name INTO variable_list
说明:
使用FETCH语句实现对游标内容的读取
variable_list必须与从游标提取的结果集类型相同
4)关闭游标
语法:
close cursor_name
说明:
使用CLOSE语句关闭一个游标
关闭游标后,所有资源都将被释放,且不能再次被打开

游标的属性:
这里写图片描述
游标的使用

-- 编写PL/SQL语句,实现使用游标从表中读取出‘SMITH’的相关信息(姓名,编号,部门名称)
declare
    v_ename emp.ename%type;
    v_deptno emp.deptno%type;
    v_dname dept.dname%type;
    cursor c_emp is select ename,emp.deptno,dname from emp,dept 
           where ename='SMITH'and emp.deptno =dept.deptno;
begin
  --打开游标
  open c_emp;
  --判断游标是否有返回记录
  if c_emp%notfound then
    dbms_output.put_line('没有找到相应记录!');
  else
    --从游标中读取记录
     fetch c_emp into v_ename,v_deptno,v_dname ;
       dbms_output.put_line(v_ename||'部门编号:'||v_deptno||'部门名称:'||v_dname);
   end if;
   --关闭游标
   close c_emp;
end;
/



-- 在上一练习基础上,实现读取‘smith’所在部门员工信息并显示
declare
    v_ename emp.ename%type;
    v_deptno emp.deptno%type;
    v_dname dept.dname%type;
    cursor c_emps is select ename,emp.deptno,dname from emp,dept 
           where ename='SMITH'and emp.deptno =dept.deptno;
begin
  for c_emp in c_emps loop
    v_ename:=c_emp.ename;
    v_deptno:=c_emp.deptno;
    v_dname:=c_emp.dname;
    dbms_output.put_line(v_ename||'部门编号'||v_deptno||'部门名称:'||v_dname);
   end loop;
end;
/
/*
说明:
1.使用for循环时,自动打开游标,而无需使用OPEN语句
2.PL/SQL会自动对变量进行隐式声明
3.当循环结束后,游标会总动关闭
*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值