oracle数据库的考试题,Oracle数据库综合考试题

Oracle数据库综合试题

表结构说明:

create table employee

(

id number(10) not null, -- 员工工号

salary number(10,2) default 0 not null, --薪水

name varchar2(24) not null --姓名

);

--开启控制台输出

set serverout on;

1.创建序列seq_employee,该序列每次取的时候它会自动增加,从1开始计数,不设最大值,并且一直累加,不循环。

-- Create sequence

createsequenceSEQ_EMPLOYEE

minvalue1

maxvalue9999999999999999999999999999

startwith1

incrementby1

cache20;

1. 写一个PL/SQL块,插入表user.employee中100条数据。插入该表中字段id用序列seq_employee实现,薪水和姓名字段可以任意填写。

declare

inumber;

begin

foriin1..100

loop

insertintoemployeevalues(seq_employee.nextval,1950+i,'匿名'||to_char(i));

commit;

endloop;

end;

/

3.写一个语句块,在语句块中定义一个显式游标,按id升序排列,打印表employee中前十条数据。

declare

--定义一个显式游标,按id升序排列

cursorcisselectid,salary,namefrom(select*fromemployeeorderbyid)whererownum<11;

v_record c%rowtype;

begin

openc;

loop

fetchcintov_record;

exitwhenc%notfound;

dbms_output.put_line(to_char(v_record.id)||','||to_char(v_record.salary)||','||v_record.name);

endloop;

closec;

end;

/

4.创建存储过程p_employee,输入员工薪水范围,返回员工工号、姓名、薪水结果集,结果集按员工薪水升序排列。

createorreplaceprocedurep_employee(iminsalaryinnumber,imaxsalaryinnumber)

is

begin

forxin(selectid,salary,namefrom(select*fromemployeewheresalarybetweeniminsalaryandimaxsalary)orderbysalary)

loop

dbms_output.put_line(to_char(x.id)||to_char(x.salary)||x.name);

endloop;

end;

/

--调用存储过程

callp_employee(1951,1956);

execp_employee(1951,1952);

5.创建函数f_employee实现更新员工薪水的功能,将薪水低于2000且姓王的员工薪水加5%,其他不变,更新成功则返回0,否则返回1。

createorreplacefunctionf_employeereturnnumber

is

begin

updateemployeesetsalary=salary+salary*0.05wheresalary<2000andnamelike'王%';

commit;

ifsql%rowcount=0then

return1;

else

return0;

endif;

end;

/

6.写一个匿名语句块,用于执行函数f_employee,并打印执行该函数的结果。

declareanumber;

begin

a:=f_employee();

dbms_output.put_line(to_char(a));

end;

/

7.创建存储过程p_create_emp,用于判断表employee是否存在,如果存在则删除该表。

createorreplaceprocedurep_create_emp

is

v_countnumber;

begin

selectcount(*)intov_countfromuser_tableswheretable_name='EMPLOYEE';

ifv_count=0then

return;

else

executeimmediate'drop table employee';

endif;

end;

/

8.写一个匿名语句块,用于执行存储过程p_create_emp。

exec p_create_emp;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值