在存储过程或者函数中 select 语句要求是格式如下 select 字段 into 变量 from 表名 要求select 结果只能有一条而有时候需要对一个select 结果集进行的一定的操作 就需要用游标 cursor 游标名 is seletc 字段1,字段2 from 表名begin open 游标名; loop FETCH 游标名 into 变量1,变量2//(此处根据select的字段数赋值给相等数量的变量) EXIT WHEN 游标名%NOTFOUND; //此处对这些数据做相应的操作 end loop; close 游标名; end;
hebo2005说的没错,游标用处挺大的
--这个例子是显示游标的用法 set serveroutput ondeclare emp_sal_cur emp.sal%type; --定义一个游标变量 cursor emp_sor is select sal from emp where sal<2000; --定义游标 begin open emp_sor; --打开游标
loop --进入循环体 fetch emp_sor into emp_sal_cur; --赋值 exit when emp_sor%notfound; --如果找不到游标就不循环了 dbms_output.put_line(emp_sor%rowcount||'.工资:'||emp_sal_cur); --打出游标的目录 end loop;
close emp_sor;--关闭游标
end; 有时候需要对一个select 结果集进行的一定的操作 就需要用游标 提高查询速度
隐式游标的用法 cursor emp_sor is select sal from emp where sal <2000; --定义游标 for a in emp_sor loop--打开游标 XXX := a.sal --赋值 end loop;
select 语句要求是格式如下
select 字段 into 变量 from 表名
要求select 结果只能有一条而有时候需要对一个select 结果集进行的一定的操作
就需要用游标
cursor 游标名
is
seletc 字段1,字段2 from 表名begin
open 游标名;
loop
FETCH 游标名 into 变量1,变量2//(此处根据select的字段数赋值给相等数量的变量)
EXIT WHEN 游标名%NOTFOUND;
//此处对这些数据做相应的操作
end loop;
close 游标名;
end;
set serveroutput ondeclare
emp_sal_cur emp.sal%type; --定义一个游标变量
cursor emp_sor is select sal from emp where sal<2000; --定义游标
begin
open emp_sor; --打开游标
loop --进入循环体
fetch emp_sor into emp_sal_cur; --赋值
exit when emp_sor%notfound; --如果找不到游标就不循环了
dbms_output.put_line(emp_sor%rowcount||'.工资:'||emp_sal_cur); --打出游标的目录
end loop;
close emp_sor;--关闭游标
end;
有时候需要对一个select 结果集进行的一定的操作
就需要用游标 提高查询速度
cursor emp_sor is select sal from emp where sal <2000; --定义游标
for a in emp_sor loop--打开游标
XXX := a.sal --赋值
end loop;