第四章 条件循环控制 练习题

1、根据输入的工作类型,输出该工作的平均工资;
declare
v_job varchar2(20) default ‘&job’;–字符串
v_avgsal number;–承接平均工资的
begin
select job,avg(sal) into v_job,v_avgsal from emp where job=v_job group by job;
dbms_output.put_line(v_job||’该工作的平均工资是’||v_avgsal);
end;

2、根据员工编号返回员工姓名;
declare
eno number default &eno;
name varchar2(20);
begin
select empno,ename into eno,name from emp where empno=&eno;
dbms_output.put_line(name);
end;

3、编写一个程序块,根据输入的编号对emp1表中对雇员按照他的基本薪水sal的10%加薪.所增加后的薪水大于5000,输出信息’不予加薪‘;
declare
eno emp.empno%type := &empno;
v_sal emp.sal%type;
v_ename emp.ename%type;
begin
select sal*1.1,ename into v_sal,v_ename from emp where empno = eno;
if v_sal >5000 then
dbms_output.put_line(‘不予加薪’);
else
update emp set sal=v_sal where empno=eno;
dbms_output.put_line(‘加薪后工资是’||v_sal);
– commit
end if;
end;

此题也可以用
case when… then…;
else…
end case;
4、编写一个程序块,输入一个雇员名,从emp1表中显示该雇员的工作岗位与薪水,若输入的雇员名不存在,显示“该雇员不存在”信息。
declare
v_job emp.job%type;
v_sal emp.sal%type;
v_name emp.ename%type := upper(‘&name’);
v_cn number;
begin
select count(*) into v_cn from emp where ename=v_name;
if v_cn=1 then –名字没有设置唯一性, 查出来可能就不是一行信息
select job,sal into v_job,v_sal from emp where ename=v_name;
dbms_output.put_line(‘工作岗位:’||v_job||’ 薪水: ‘||v_sal);
else
dbms_output.put_line(‘该雇员不存在’); –查询语句结果出来是0行,也就是说会报错
end if;
end;

方式二:异常处理
declare
v_job emp.job%type;
v_sal emp.sal%type;
name emp.ename%type := upper(‘&name’);
begin
select job,sal into v_job,v_sal from emp where ename=name;
dbms_output.put_line(‘工作岗位:’||v_job||’薪水:’||v_sal);
exception
when no_data_found then
dbms_output.put_line(‘该雇员不存在’);
end;

6、使用PL/SQL程序实现,查询员工编号为7788的员工薪水,然后判断,如果薪水小于1000,打印“薪水低”,如果1000到2000,打印“中等”,大于2000,打印“薪水不错”。
declare
v_sal emp.sal%type;
begin
select sal into v_sal from emp where empno=7788;
case when v_sal<1000 then dbms_output.put_line(‘薪水低’);
when v_sal between 1000 and 2000 then dbms_output.put_line(‘中等’);
else
dbms_output.put_line(‘薪水不错’);
end case;
end;

declare
v_empno emp.empno%type;
v_sal emp.sal%type;
begin
select empno,sal into v_empno,v_sal from emp where empno=7788;
case
when v_sal<1000 then
dbms_output.put_line(‘薪水低’);
when v_sal between 1000 and 2000 then
dbms_output.put_line(‘中等’);
when v_sal>2000 then
dbms_output.put_line(‘薪水不错’);
end case;
dbms_output.put_line(v_sal);
end;

猜你喜欢

转载自blog.csdn.net/weixin_42800008/article/details/81270480