oracle游标
接受查询结果集
语法:
声明游标
coursor 游标变量 is 查询sql语句 —————— 没有执行sql
打开游标
open 游标变量;-----执行sql语句
提取数据
fetch 游标变量 into记录类型变量
关闭游标
close 游标
游标属性
游标变量%found --如果返回真就代表现在有数据,如果假没有数据
游标变量%notfound --- 如果返回真就没有数据,假有数据
sys_refoutsor--系统游标 不需要声明赋值
while循环游标
declare
cursor v_cursot is select * from emp;--声明游标
v_emp emp%rowtype;--记录类型变量
begin
open v_cursot;--打开游标
fetch v_cursot into v_emp;--提取游标
while v_cursot%found loop
dbms_output.put_line('员工编号:' || v_emp.empno);
fetch v_cursot into v_emp;
end loop;
v_cursot close;
end;
loop 循环游标
declare
cursor v_cursot is select * from emp;--声明游标
v_emp emp%rowtype;--记录类型变量
begin
open v_cursot;--提取
fetch v_cursot into v_emp;
loop
exit when v_cursot%notfound;
dbms_output.put_line('员工编号:' || v_emp.empno);
fetch v_cursot into v_emp;
end loop;
v_cursot close;
end;
for 循环游标
declare
cursor v_cursor is select * from emp;
v_emp emp%rowtype;
begin
for v_emp in v_cursor loop
dbms_output.put_line('员工编号:' || v_emp.empno);
end loop;
end;
输入循环游标
&表示输入
declare
cursor v_cursot(v_deptno number) is select * from emp where deptno=v_deptno ;--声明游标
v_emp emp%rowtype;--记录类型变量
v_nums number := &num1;
begin
open v_cursot(v_nums);--打开执行sql
fetch v_cursot into v_emp;
while v_cursot%found loop
dbms_output.put_line('员工编号:' || v_emp.empno);
fetch v_cursot into v_emp;
end loop;
end;
序列号
create sequence student_id;
– 序列如同自增长 .nextval下一个
select student_id.nextval from dual;
– .currval 现在值
select student_id.currval from dual;