oracle实验报告四

oracle实验报告四

针对实验一中创建的表进行以下操作:
–1.创建一个视图,显示80后的员工信息

create view 八零后 
as 
select * from staff where 生日>=to_date('1980-01-01','yyyy-MM-dd');
select * from 八零后;

–2.创建一个名为‘检索信息’的存储过程,该存储过程完成检索指定员工号所参与的项目总数,其中员工号为输入参数,项目总数为输出参数
–调用‘检索信息’存储过程,完成检索1号员工参与的项目总数。

create or replace procedure 检索信息(v_员工编号  员工参加项目.员工编号%type) 
as 
p_count varchar2(20);
begin
select count(*) into p_count from 员工参加项目 where 员工编号=v_员工编号;
DBMS_OUTPUT.PUT_LINE('项目总数:'||p_count);
end 检索信息;
begin 
检索信息(&员工编号:);
end;

–3.创建一个触发器,该触发器完成当项目结束时,将预算加1000,并将新的预算和旧预算输出

create trigger 预算增加
after insert on project
for each row 
  when(trunc(sysdate)>=trunc(new.xend))
begin
  for v_vk in yusuan
  预算:=预算+1000;
  loop
  DBMS_OUTPUT.put_line('项目编号:'||v_vk.项目编号);
  DBMS_OUTPUT.put_line('旧预算:'||v_vk.预算);
  DBMS_OUTPUT.put_line('新的预算:'||v_vk.新预算);
  end loop;
end 预算增加;

–4.使用PL/SQL完成:将员工薪资小于5000的员工薪资加薪15%,薪资大于5000小于8000的加薪10%,
–大于8000的加薪5%,并将员工编号,员工姓名和加薪后的薪资输出

declare
cursor 薪资 is select * from staff;
begin
update staff set salary=1.15*salary where salary<=5000;
update staff set salary=1.1*salary where salary>5000 and salary<=8000;
update staff set salary=1.05*salary where salary>5000 and salary>8000;
for v_vk in 薪资
loop
DBMS_OUTPUT.put_line('员工编号:'||v_vk.员工编号);
DBMS_OUTPUT.put_line('员工姓名:'||v_vk.姓名);
DBMS_OUTPUT.put_line('薪资:'||v_vk.salary);
end loop;
end;

–5.使用显示游标循环输出项目编号,项目名称,预算

declare 
cursor project1 is select * from project;
begin
for v_vk in project1
loop
DBMS_OUTPUT.put_line('项目编号:'||v_vk.项目编号);
DBMS_OUTPUT.put_line('项目名称:'||v_vk.项目名称);
DBMS_OUTPUT.put_line('预算:'||v_vk.预算);
end loop;
end;

–6.使用带参游标完成:输入员工编号,查询显示出员工编号,姓名,年龄

declare
cursor search(v_员工编号 staff.员工编号%type) is select * from staff where 员工编号=v_员工编号;
begin
for v_vk in search(&员工编号:)
loop
DBMS_OUTPUT.put_line('员工编号:'||v_vk.员工编号);
DBMS_OUTPUT.put_line('员工姓名:'||v_vk.姓名);
DBMS_OUTPUT.put_line('年龄:'||trunc
(months_between(to_date('2020-07-15','yyyy-mm-dd'),v_vk.生日)/12));
end loop;
end;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值