游标

来源:互联网 发布:centos 开启ftp 编辑:程序博客网 时间:2024/05/22 02:08

**游标:
用来处理使用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.当循环结束后,游标会总动关闭*/
原创粉丝点击