- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验九 PLSQL编技术一
实验九 PL/SQL编程技术一
实验前准备:
参见书本第20页更改ORALCE 10g数据库服务器网络配置,将服务命名orcl和监听程序LISTENER的主机名w47改为本机名。
实验内容:
1、完成书本P297‘2. 实训题’的第(2)小题。
2、完成书本P322‘2. 实训题’的第(1)(2)(6)(7)小题,并写出调用所创建存储过程和函数的语句。
P297,2.(2)编写一个PL/SQL块,输出所有比本部门平均工资高的员工信息。
declare
v_emp emp%rowtype;
v_empno emp.empno%type;
v_ename emp.emp.ename%type;
v_sal emp.sal%type;
v_deptno emp.deptno%type;
begin
v_deptno:=aa;
select * into v_emp from emp where (deptno=v_deptno||emp.salavg(sal));
dbms_output.put_line(v_empno||‘ ’||v_ename||‘ ’||v_sal||‘ ’||v_deptno);
end;
P322,2.(1)创建一个存储过程,以员工号为参数,输出该员工的工资。
create or replace procedure show_sal(
p_empno emp.empno%type)
is
p_sal emp.sal%type;
begin
select sal into p_sal from emp where empno=p_empno;
dbms_output.put_line(p_sal);
end show_sal;
declare
v_empno emp.empno%type;
begin
show_sal(v_empno);
end;
(2)创建一个存储过程,以员工号为参数,修改该员工的工资。若该员工属于10号部门,则工资增加150,若属于20号部门,则工资增加200;若属于30号部门,则工资增加250;若属于其他部门,则工资增加300。
create or replace procedure add_sal(
p_empno emp.empno%type)
is
p_sal emp.sal%type;
p_deptno emp.deptno%type;
p_increment number;
begin
select deptno into p_deptno from emp where empno=p_empno;
if p_deptno=10 then p_increment:=150;
elsif p_deptno=20 then p_increment:=200;
elsif p_deptno=30 then p_increment:=250;
else p_increment:=300;
end if;
update emp set sal=sal+p_increment where empno=p_empno;
end add_sal;
declare
v_empno emp.empno%type;
begin
add_sal(v_empno);
end;
(6)创建一个函数,以部门号为参数,返回部门平均工资。
create or replace function ret_avgsal(
p_deptno emp.dept%type)
as
p_avgsal emp.sal%type;
begin
select avg(sal) into p_avgsal from emp where deptno=p_deptno;
return p_avgsal;
exception
when no_data_found then
dbms_output.put_line(‘The deptno is invalid!’);
end ret_avgsal;
declare
v_deptno emp.dept%type;
begin
ret_avgsal(v_deptno);
end;
(7)创建一个函数,以员工号为参数,返回该员工所在部门的平均工资。
create or replace function show_avgsal(
p_empno emp.empno%type)
return emp.sal%type;
as
p_avgsal emp.sal%type
begin
select avg(sal) into p_avgsal from emp where empno=p_empno;
return p_avgsal;
exception
whe
文档评论(0)