时间:2021-07-01 10:21:17 帮助过:25人阅读
2、带参数游标
语法:cursor 游标变量名(参数名 数据类型...) is 查询语句(查询语句语句的右值可以使用游标参数);
示例代码如下:
- cursor c2(dno emp.deptno%type) <span style="color: #0000ff;">is</span> <span style="color: #0000ff;">select</span> empno <span style="color: #0000ff;">from</span> emp <span style="color: #0000ff;">where</span> deptno = dno;
遍历游标
关键字:open;fetch;close;
1、不带参数的游标
语法:
open 游标变量名;
loop
fetch 游标变量名 into 变量名;
exit when 条件(常使用:游标变量名%notfound;)
循环体(使用变量执行其他语句)
end loop;
close 游标变量名;
示例代码如下:
- <span style="color: #000000;">open c1;
- loop
- fetch c1 into e;
- exit when c1</span>%<span style="color: #000000;">notfound;
- dbms_output.put_line(e.ename);
- end loop;
- close c1;</span>
2、带参数的游标
语法:
open 游标变量名(实参列表);
loop
fetch 游标变量名 into 变量;
exit loop 条件(常使用:游标变量名%notfound;)
循环体(使用变量执行其他语句)
end loop;
close 游标变量名;
示例代码如下:
- open c2(<span style="color: #800080;">10</span><span style="color: #000000;">);
- loop
- fetch c2 into eno;
- exit when c2</span>%<span style="color: #000000;">notfound;
- update emp </span><span style="color: #0000ff;">set</span> sal = sal + <span style="color: #800080;">10</span> <span style="color: #0000ff;">where</span> empno =<span style="color: #000000;"> eno;
- commit;
- end loop;
- close c2;</span>
使用游标的两个简单案例
1、使用游标输出emp表所有员工姓名
示例代码如下:
- --<span style="color: #000000;">使用游标遍历输出emp表员工姓名
- declare
- cursor c1 </span><span style="color: #0000ff;">is</span> <span style="color: #0000ff;">select</span> * <span style="color: #0000ff;">from</span><span style="color: #000000;"> emp;
- e emp</span>%<span style="color: #000000;">rowtype;
- begin
- open c1;
- loop
- fetch c1 into e;
- exit when c1</span>%<span style="color: #000000;">notfound;
- dbms_output.put_line(e.ename);
- end loop;
- close c1;
- end;</span>
2、使用游标给emp表部门编号为10的所有员工增加工资10
示例代码如下:
- --<span style="color: #000000;">使用游标给emp部门编号为10的员工涨10元工资
- declare
- cursor c2(dno emp.deptno</span>%type) <span style="color: #0000ff;">is</span> <span style="color: #0000ff;">select</span> empno <span style="color: #0000ff;">from</span> emp <span style="color: #0000ff;">where</span> deptno =<span style="color: #000000;"> dno;
- eno emp.empno</span>%<span style="color: #000000;">type;
- begin
- open c2(</span><span style="color: #800080;">10</span><span style="color: #000000;">);
- loop
- fetch c2 into eno;
- exit when c2</span>%<span style="color: #000000;">notfound;
- update emp </span><span style="color: #0000ff;">set</span> sal = sal + <span style="color: #800080;">10</span> <span style="color: #0000ff;">where</span> empno =<span style="color: #000000;"> eno;
- commit;
- end loop;
- close c2;
- end;</span>
oracle PL/SQL编程语言之游标的使用
标签:pre win 编程语言 部门 fetch declare exit div sql编程