函数练习题

  1. 定义一个函数,用于计算emp表中某个部门的平均工资。
create or replace function davg(dno emp.deptno%type) return number
is
f_avg emp.sal%type;
begin
  select avg(sal) into f_avg from emp where deptno=dno;
  return f_avg;
end;

declare 
begin
  dbms_output.put_line(davg(10));
end;
  1. 写一个函数,传入员工编号,返回所在部门名称
create or replace function redname(eno emp.empno%type) return varchar2
is 
dname dept.dname%type;
begin
  select dname into dname from dept,emp where dept.deptno=emp.deptno and empno=eno;
  return dname;
end;
declare 
begin
  dbms_output.put_line(redname(7788));
end;
  1. 写一个函数,可以查询某个员工的年收入,包括奖金
create or replace function asal(eno emp.empno%type) return emp.sal%type
is
years emp.sal%type;
begin
    select (nvl2(comm,sal+comm,sal))*12 into years from emp where empno=eno;
    --nvl()函数:实现空值的转换,其语法格式如下:nvl(a,b);  如果a为null,则返回b;反之,返回a;
    --nvl2()函数:nvl2(a,b,c);  如果a为null,则返回c;若不为null,则返回b
    return years;
end;
--select * from emp;
declare
  v_empno emp.empno%type:=&aa;
begin
  dbms_output.put_line(v_empno||'的年收入是'||asal(v_empno));
end;
  1. 定义函数,输入部门编号,查询出该部门的员工总数。
create or replace function ac(dno emp.deptno%type) return number
is
dc number;
begin
  select count(empno) into dc from emp where deptno=dno;
  return dc;
end;
declare 
  v_dno emp.deptno%type:=&aa;
begin
  dbms_output.put_line(v_dno||'部门的人数是'||ac(v_dno));
end;
  1. 定义函数,使用记录类型作为返回类型,根据指定的部门号返回其对应的部门信息
create or replace function dm(dno dept.deptno%type) return dept%rowtype
is
  cursor mycur is select * from dept where deptno=dno;
  dp dept%rowtype;
begin
  open mycur;
  loop 
    fetch mycur into dp;
    exit when mycur%notfound;
    return dp;
  end loop;
  close mycur;
end;
declare 
  v_deptno dept.deptno%type:=&aa;
  r1 dept%rowtype;
begin
  r1:=dm(v_deptno);
  dbms_output.put_line(r1.deptno||'  '||r1.dname||'  '||r1.loc);
end;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值