oracle的一些习题.doc
文本预览下载声明
求雇员的平均薪水,当薪水小于1000时,提示“薪水太低”,当薪水大于等于1000小于2000时,
提示起步的薪水,当薪水大于等于2000时,
提示已经步入软件行业中,使用CASE表达式来实现。
set serveroutput on
declare
v_sal emp.sal%type;
v_var varchar2(20);
begin
select avg(sal)
into v_sal
from emp;
v_var :=
case
when v_sal1000 then 薪水太低
when v_sal=1000 and v_sal2000 then 起步的薪水
else 已经步入软件行业中
end ;
dbms_output.put_line(v_var);
end;
declare
v_count number(2):=1;
v_empno emp.empno%type;
v_ename emp.ename%type:=ljs;
v_job emp.job%type:=manager;
begin
select max(empno) into v_empno
from emp;
loop
insert into test(empno,ename,job)
values((v_empno+v_count),v_ename,v_job);
v_count :=v_count+1;
exit when v_count3;
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;
l last_line
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 on
declare
ename emp.ename%type;
sal emp.sal%type;
cursor emp_cursor is
select ename,sal from emp;
begin
o
显示全部