- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle数据库验-PLSQL游标、过程、函数、包的使用
Oracle数据库基础
实验5 PL/SQL游标、过程、函数、包的使用
【实验学时】
2学时
【】
【】
1 declare
2 cursor c_dept is select * from dept order by deptno;
3 cursor c_emp(p_dept emp.deptno%type)is select ename,sal from emp where deptno=p_dept
4 order by ename;
5 r_dept dept%rowtype;
6 v_ename emp.ename%type;
7 v_salary emp.sal%type;
8 v_tot_salary emp.sal%type;
9 begin
10 open c_dept;
11 loop
12 fetch c_dept into r_dept;
13 exit when c_dept%notfound;
14 dbms_output.put_line(department:||r_dept.deptno||-||r_dept.dname);
15 v_tot_salary:=0;
16 open c_emp(r_dept.deptno);
17 loop
18 fetch c_emp into v_ename,v_salary;
19 exit when c_emp%notfound;
20 dbms_output.put_line(name:||v_ename||salary:||v_salary);
21 v_tot_salary:=v_tot_salary+v_salary;
22 end loop;
23 close c_emp;
24 dbms_output.put_line(total salary for dept:||v_tot_salary);
25 end loop;
26 close c_dept;
27* end;
SQL /
PL/SQL 过程已成功完成。
用cursor for编写上题的程序。
1 declare
2 cursor c_dept is select deptno,dname from dept order by deptno;
3 cursor c_emp(p_dept emp.deptno%type)is
4 select ename,sal
5 from emp
6 where deptno=p_dept
7 order by ename;
8 v_tot_salary emp.sal%type;
9 begin
10 for r_dept in c_dept loop
11 dbms_output.putline(department:||r_dept.deptno||-||r_dept.ename);
12 v_tot_salary:=0;
13 for r_emp in c_emp(r_dept.deptno)loop
14 dbms_output.put_line(name:||r_emp.ename||salary:||r_emp.sal);
15 v_tot_salary:=v_tot_salary+r_emp.sal;
16 end loop;
17 dbms_output.put_line(total salary for dept:||v_tot_salary);
18 end loop;
19* end;
QL /
dbms_output.putline(department:||r_dept.deptno||-||r_dept.ename);
创建两个表格,myemp和mybonus表,分别与员工emp表和津贴bonus表的结构及数据相同。要求用游标完成操作:取出myemp表中工资大于1000元的记录,将其工资的30%作为奖金插入到mybonus表中。
create or replace procedure insertjintie() isCURSOR emp IS SELECT 工号,姓名,工资 FROM 职工表 where 工资1000;beginfor v_emp in emp loop insert into 津贴表(工号,工资) values(v_emp.工号,v_emp.工资*0.3);end loop;
文档评论(0)