ImageVerifierCode 换一换
你正在下载:

游 标.docx

[预览]
格式:DOCX , 页数:17 ,大小:55.88KB ,
资源ID:9886820      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9886820.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(游 标.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

游 标.docx

1、游 标游 标 隐式游标SQL - update add emp sal 10% in deptno=10SQL declare 2 l_deptno t_emp.deptno%type; 3 begin 4 l_deptno := &no; 5 update t_emp set sal=sal*1.1 where deptno=l_deptno; 6 if sql%found then 7 dbms_output.put_line(sql%rowcount|emp updated!); 8 end if; 9 if sql%notfound then 10 dbms_output.put_li

2、ne(updated failer!); 11 end if; 12 if sql%isopen then 13 dbms_output.put_line(is open!); 14 else 15 dbms_output.put_line(is closed!); 16 end if; 17 end; 18 /输入 no 的值: 10原值 4: l_deptno := &no;新值 4: l_deptno := 10;3emp updated!is closed!PL/SQL 过程已成功完成。SQL /输入 no 的值: 20原值 4: l_deptno := &no;新值 4: l_dep

3、tno := 20;5emp updated!is closed!PL/SQL 过程已成功完成。SQL /输入 no 的值: 30原值 4: l_deptno := &no;新值 4: l_deptno := 30;6emp updated!is closed!PL/SQL 过程已成功完成。SQL /输入 no 的值: 40原值 4: l_deptno := &no;新值 4: l_deptno := 40;updated failer!is closed!PL/SQL 过程已成功完成。 显示游标不带参游标:-显示部门10的员工信息: 1 declare 2 -l_deptno t_emp.d

4、eptno%type; 3 l_emp t_emp%rowtype; 4 cursor cur_emp is select * from t_emp where deptno=10; 5 begin 6 open cur_emp; 7 fetch cur_emp into l_emp; 8 dbms_output.put_line(l_emp.ename| | 9 l_emp.sal| | 10 l_emp.job| | 11 l_emp.deptno); 12 fetch cur_emp into l_emp; 13 dbms_output.put_line(l_emp.ename| | 1

5、4 l_emp.sal| | 15 l_emp.job| | 16 l_emp.deptno); 17 close cur_emp; 18* end;SQL /CLARK 2695 MANAGER 10KING 5500 PRESIDENT 10PL/SQL 过程已成功完成。*用loop循环: 1 declare 2 l_emp t_emp%rowtype; 3 cursor cur_emp is select * from t_emp where deptno=10; 4 begin 5 open cur_emp; 6 loop 7 fetch cur_emp into l_emp; 8 e

6、xit when cur_emp%notfound; 9 dbms_output.put_line(l_emp.ename| | 10 l_emp.sal| | 11 l_emp.job| | 12 l_emp.deptno); 13 end loop; 14 close cur_emp; 15* end;SQL /CLARK 2695 MANAGER 10KING 5500 PRESIDENT 10MILLER 1430 CLERK 10PL/SQL 过程已成功完成。*用while循环:SQL declare 2 l_emp t_emp%rowtype; 3 cursor cur_emp i

7、s select *from t_emp where deptno=10; 4 begin 5 open cur_emp; 6 fetch cur_emp into l_emp; 7 while cur_emp%found loop 8 dbms_output.put_line(l_emp.ename| | 9 l_emp.sal| | 10 l_emp.job| | 11 l_emp.deptno); 12 fetch cur_emp into l_emp; 13 end loop; 14 close cur_emp; 15 end; 16 /CLARK 2450 MANAGER 10KIN

8、G 5000 PRESIDENT 10MILLER 1300 CLERK 10PL/SQL 过程已成功完成。带参游标:-显示各部门的员工信息: 1 declare 2 l_deptno t_emp.deptno%type; 3 l_emp t_emp%rowtype; 4 cursor cur_emp(v_deptno t_emp.deptno%type) 5 is 6 select *from t_emp where deptno=v_deptno; 7 begin 8 l_deptno := &no; 9 open cur_emp(l_deptno); 10 fetch cur_emp i

9、nto l_emp; 11 while cur_emp%found loop 12 dbms_output.put_line(l_emp.ename| | 13 l_emp.sal| | 14 l_emp.job| | 15 l_emp.deptno); 16 fetch cur_emp into l_emp; 17 end loop; 18 close cur_emp; 19* end;SQL /输入 no 的值: 10原值 8: l_deptno := &no;新值 8: l_deptno := 10;CLARK 2450 MANAGER 10KING 5000 PRESIDENT 10M

10、ILLER 1300 CLERK 10PL/SQL 过程已成功完成。SQL /输入 no 的值: 20原值 8: l_deptno := &no;新值 8: l_deptno := 20;SMITH 800 CLERK 20JONES 2975 MANAGER 20SCOTT 3000 ANALYST 20ADAMS 1100 CLERK 20FORD 3000 ANALYST 20PL/SQL 过程已成功完成。*-显示sal2000,deptno=20的员工信息: 1 declare 2 l_deptno t_emp.deptno%type; 3 l_sal t_emp.sal%type;

11、4 l_emp t_emp%rowtype; 5 cursor cur_emp(v_deptno t_emp.deptno%type,v_sal t_emp.sal%type) 6 is 7 select *from t_emp where deptno=v_deptno and salv_sal; 8 begin 9 l_deptno := &no; 10 l_sal := &sal; 11 open cur_emp(l_deptno,l_sal); 12 loop 13 fetch cur_emp into l_emp; 14 exit when cur_emp%notfound; 15

12、dbms_output.put_line(l_emp.ename| | 16 l_emp.sal| | 17 l_emp.deptno); 18 end loop; 19 close cur_emp; 20* end;SQL /输入 no 的值: 20原值 9: l_deptno := &no;新值 9: l_deptno := 20;输入 sal 的值: 2000原值 10: l_sal := &sal;新值 10: l_sal := 2000;JONES 2975 20SCOTT 3000 20FORD 3000 20PL/SQL 过程已成功完成。*只做查询的可以用for循环:-查员工信息

13、:SQL declare 2 cursor cur_emp is select *from t_emp; 3 begin 4 for cur in cur_emp loop 5 dbms_output.put_line(cur.ename| | 6 cur.sal| | 7 cur.deptno); 8 end loop; 9 end; 10 /SMITH 800 20ALLEN 1600 30WARD 1250 30JONES 2975 20MARTIN 1250 30BLAKE 2850 30CLARK 2450 10SCOTT 3000 20KING 5000 10TURNER 1500

14、 30ADAMS 1100 20JAMES 950 30FORD 3000 20MILLER 1300 10PL/SQL 过程已成功完成。*8* 1 declare 2 cursor cur_emp is select *from t_emp where deptno=10; 3 begin 4 for cur in cur_emp loop 5 dbms_output.put_line(cur.ename| |cur.sal); 6 end loop; 7* end;SQL /CLARK 1984.5KING 4050MILLER 1053* 1 declare 2 l_deptno t_e

15、mp.deptno%type; 3 cursor cur_emp 4 is 5 select *from t_emp where deptno=l_deptno; 6 begin 7 l_deptno := &no; 8 for cur in cur_emp loop 9 dbms_output.put_line(cur.ename| |cur.sal); 10 end loop; 11* end;SQL /输入 no 的值: 10原值 7: l_deptno := &no;新值 7: l_deptno := 10;CLARK 1984.5KING 4050MILLER 1053PL/SQL

16、过程已成功完成。SQL /输入 no 的值: 20原值 7: l_deptno := &no;新值 7: l_deptno := 20;SMITH 800JONES 2975SCOTT 3000ADAMS 1100FORD 3000PL/SQL 过程已成功完成。 Ref游标(引用游标reference cursor)强引用游标:(一般建议多用强引用游标,少用弱引用游标!)-可以显示各部门的员工信息: 1 declare 2 l_emp t_emp%rowtype; 3 type ref_cur_emp is ref cursor return t_emp%rowtype; 4 cur_emp

17、ref_cur_emp; 5 begin 6 open cur_emp for select *from t_emp where deptno=&no; 7 loop 8 fetch cur_emp into l_emp; 9 exit when cur_emp%notfound; 10 dbms_output.put_line(l_emp.ename| | 11 l_emp.sal| | 12 l_emp.deptno); 13 end loop; 14 close cur_emp; 15* end;SQL /输入 no 的值: 10原值 6: open cur_emp for select

18、 *from t_emp where deptno=&no;新值 6: open cur_emp for select *from t_emp where deptno=10;CLARK 2450 10KING 5000 10MILLER 1300 10PL/SQL 过程已成功完成。SQL /输入 no 的值: 20原值 6: open cur_emp for select *from t_emp where deptno=&no;新值 6: open cur_emp for select *from t_emp where deptno=20;SMITH 800 20JONES 2975 2

19、0SCOTT 3000 20ADAMS 1100 20FORD 3000 20PL/SQL 过程已成功完成。*弱引用游标: 1 declare 2 l_emp t_emp%rowtype; 3 type ref_cur_emp is ref cursor; 4 cur_emp ref_cur_emp; 5 begin 6 open cur_emp for select *from t_emp where deptno=&no; 7 loop 8 fetch cur_emp into l_emp; 9 exit when cur_emp%notfound; 10 dbms_output.put_

20、line(l_emp.ename| | 11 l_emp.sal| | 12 l_emp.deptno); 13 end loop; 14 close cur_emp; 15* end;SQL /输入 no 的值: 10原值 6: open cur_emp for select *from t_emp where deptno=&no;新值 6: open cur_emp for select *from t_emp where deptno=10;CLARK 2450 10KING 5000 10MILLER 1300 10PL/SQL 过程已成功完成。SQL /输入 no 的值: 20原值

21、 6: open cur_emp for select *from t_emp where deptno=&no;新值 6: open cur_emp for select *from t_emp where deptno=20;SMITH 800 20JONES 2975 20SCOTT 3000 20ADAMS 1100 20FORD 3000 20PL/SQL 过程已成功完成。*案例:-查询员工各部门平均工资,最大工资,最小工资等等: 1 declare 2 type rec_static_emp is record( 3 deptno t_emp.deptno%type, 4 sums

22、al number(8), 5 avgsal number(10,4), 6 maxsal t_emp.sal%type, 7 minsal t_emp.sal%type, 8 counter number(3); 9 l_stat rec_static_emp; 10 type ref_stat_emp is ref cursor return rec_static_emp; 11 cur_stat_emp ref_stat_emp; 12 begin 13 open cur_stat_emp for 14 select deptno,sum(sal),avg(sal),max(sal),m

23、in(sal),count(*) 15 from t_emp 16 group by deptno; 17 loop 18 fetch cur_stat_emp into l_stat; 19 exit when cur_stat_emp%notfound; 20 dbms_output.put_line(l_stat.deptno| | 21 l_stat.sumsal| | 22 l_stat.avgsal| | 23 l_stat.maxsal| | 24 l_stat.minsal| | 25 l_stat.counter); 26 end loop; 27 close cur_sta

24、t_emp; 28* end;SQL /30 9400 1566.6667 2850 950 620 10875 2175 3000 800 510 7088 2362.5 4050 1053 3PL/SQL 过程已成功完成。综合案例:-对大于2000的员工进行提薪10%,并将提薪的信息写入日志表: 1 declare 2 l_sal t_emp.sal%type; 3 l_rate number(4,2); 4 l_oldsal t_emp.sal%type; 5 l_emp t_emp%rowtype; 6 cursor cur_emp(v_sal t_emp.sal%type) 7 is

25、 8 select *from t_emp where salv_sal; 9 begin 10 l_sal := &sal; 11 l_rate := &rate; 12 open cur_emp(l_sal); 13 loop 14 fetch cur_emp into l_emp; 15 l_oldsal := l_emp.sal; 16 exit when cur_emp%notfound; 17 update t_emp set sal=sal*l_rate where empno=l_emp.empno; 18 insert into t_log values(seq_log.ne

26、xtval, 19 l_emp.empno|old sal=|l_oldsal| 20 ,newsal=|l_emp.sal*l_rate,sysdate); 21 end loop; 22 close cur_emp; 23 commit; 24* end;SQL /输入 sal 的值: 2000原值 10: l_sal := &sal;新值 10: l_sal := 2000;输入 rate 的值: 1.5原值 11: l_rate := &rate;新值 11: l_rate := 1.5;PL/SQL 过程已成功完成。SQL select *from t_log; ID LOGINFO

27、 TIMER- - - 1 7566old sal=2975,newsal=2975 16-8月 -13 2 7698old sal=2850,newsal=2850 16-8月 -13 3 7788old sal=3000,newsal=3000 16-8月 -13 4 7839old sal=4050,newsal=4050 16-8月 -13 5 7902old sal=3000,newsal=3000 16-8月 -13 6 7566old sal=3272.5,newsal=3272.5 16-8月 -13 7 7698old sal=3135,newsal=3135 16-8月 -13 8 7788old sal=3300,newsal=3300 16-8月 -13 9 7839old sal=4455,newsal=4455 16-8月 -13 10 7902old sal=3300,newsal=3300 16-8月 -13 11 7566old sal=3599.75,newsal=3959.725 16-8月 -13 ID LOGINFO TIMER- - -

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2