资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
求雇员的平均薪水,当薪水小于1000时,提示“薪水太低”,当薪水大于等于1000小于2000时,提示起步的薪水,当薪水大于等于2000时,提示已经步入软件行业中,使用CASE表达式来实现。set serveroutput ondeclare v_sal emp.sal%type; v_var varchar2(20);begin select avg(sal) into v_sal from emp; v_var := case when v_sal=1000 and v_sal3; end loop;end;for v_count in 1.3 loop insert into test(empno,ename,job) values(v_empno+v_count),v_ename,v_job)创建表message,结构如下: results varchar2(10)使用for循环插入1到10(除了6和8)的数据到表中,在结束之前提交数据。create table message(results varchar2(10); begin for i in 1.10 loop if i=6 or i=8 then null; else insert into message values(i); end if; end loop; commit; end; select * from message; begin for i in 1.10 loop; if i6 and i8 then insert into message values(i); end if; end loop; commit; end; 尽量不用goto语句;begin dbms_output.put_line(1); goto l_last_line; dbms_output.put_line(2); return; dbms_output.put_line(3);end; 第三章创建一个记录类型emp_record_type,它包含雇员的名字、薪水、工作岗位,声明一个该类型的变量emp_record,查询雇员编号是7788雇员的上述信息,并显示。declare type emp_record_type is recode (ename emp.ename%type, sal emp.sal%type, job varchar2(20); emp_record emp_record_type;begin select ename,job,sal into emp_record from emp where empno=7788; dbms_output.put_line(雇员名:=emp_record.ename;薪水:=sal);end; 第四章创建一个游标,查询雇员的名字和薪水,当查询到某雇员的薪水大于3000元时,退出循环,并显示其对应的名字和薪水。set serveroutput ondeclare ename emp.ename%type; sal emp.sal%type; cursor emp_cursor is select ename,sal from emp;begin open emp_cursor; loop fetch emp_cursor into ename,sal; if(sal3000)then dbms_output.put_line(ename|sal); exit; end if; end loop; close emp_cursor;end; 创建一个游标,查询薪水大于3000元的雇员名字和对应薪水,并显示其对应的 名字和薪水。set serveroutput ondeclare ename emp.ename%type; sal emp.sal%type; cursor emp_cursor is select ename,sal from emp where sal2000;begin if not emp_cursor%isopen then open emp_cursor; end if; loop fetch emp_cursor into ename,sal; exit when emp_cursor%notfound; dbms_output.put_line(ename|的薪水为|sal);end loop; close emp_cursor;end; 创建一个游标,查询雇员名字和对应薪水,当遇到雇员名是SCOTT的雇员时,退出游标的FOR循环,显示其对应的薪水,并显示其在游标中的位置。 declare cursor emp_cursor is select ename,sal from emp;begin for emp_record in emp_cursor loop if emp_record.ename=SCOTT then dbms_output.put_line(emp_record.ename|的薪水为|emp_record.sal); dbms_output.put_line(emp_cursor%rowcount); exit; end if; end loop;end; 不需声明的游标begin for emp_record in (select empno,ename from emp) loop if emp_record.ename=SCOTT then dbms_output.put_line(emp_record.empno); end if; end loop; end;带参数的游标declare cursor emp_cursor (p_deptno number,p_sal number) is select ename from emp where deptno=p_deptno and salp_sal;begin open emp_cursor(10,2000); close emp_cursor; open emp_cursor(20,4000);end; 在一个快中分别 显示薪水低于2000,在2000与4000之间,以及大于4000的雇员名。declare cursor emp_cursor (p_sal1 number,p_sal2 number) is select ename from emp where salp_sal1 and salp_sal2;begin for emp_record in emp_cursor(0,2000)loop dbms_output.put_line(薪水低于2000的用户是 :|emp_record.ename); end loop; dbms_output.put_line(=) ; for emp_record in emp_cursor(2000,4000)loop dbms_output.put_line(薪水大于2000低于4000的用户是:|emp_record.ename); end loop; dbms_output.put_line(=) ; for emp_record in emp_cursor(4000,100000)loop dbms_output.put_line(薪水大于4000的用户是 :|emp_record.ename); end loop;end;for update 子句declare cursor emp_cursor is select ename,sal from emp for update nowait;begin for emp_record in emp_cursor loop if(emp_record.ename=SCOTT)then update emp set sal=emp_record.sal+300 where ename=SCOTT; exit; end if; end loop;end;where current of子句declare cursor sal_cursor is select sal from emp where deptno=30 for update nowait;begin for emp_record in sal_cursor loop update emp set sal=emp_record.sal*1.10 where
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号