Oracle、PL/SQL存储

 

目录

创建一个过程,用于给指定的员工涨100元钱。并且输出涨前和涨后的工资。

 查询指定员工的姓名和薪水,并利用out模式参数值传给调用者。

 在命令窗口通过绑定变量调用,相关步骤

 创建一个存储过程,根据提供的雇员编号,查询该雇员的上级领导人的姓名,并返回

 定义一个函数,用于计算emp表中某个部门的平均工资。

写一个函数,传入员工编号,返回所在部门名称 

 写一个函数,可以查询某个员工的年收入,包括奖金

 定义函数,输入部门编号,查询出该部门的员工总数。

定义函数,使用记录类型作为返回类型,根据指定的部门号返回其对应的部门信息


创建一个过程,用于给指定的员工涨100元钱。并且输出涨前和涨后的工资。

create or replace procedure my(eno emp.empno%type)
is p_sal emp.sal%type;
begin
select sal into p_sal from emp where empno=eno;
update emp set sal=sal+100 where empno=eno;
dbms_output.put_line('改之前的工资为:'||p_sal||'改之后的工资为:'||(p_sal+100));
end;

exec my(7369);

 查询指定员工的姓名和薪水,并利用out模式参数值传给调用者。


create or replace procedure my(eno emp.empno%type,p_name out emp.ename%type,p_sal out emp.sal%type)
is
begin
select ename,sal into p_name,p_sal from emp where empno=eno;
exception
when no_data_found then
dbms_output.put_line('没有员工');
end;

declare
eno emp.empno%type;
p_name emp.ename%type;
p_sal emp.sal%type;
begin
my(7788,p_name,p_sal);
dbms_output.put_line(p_name||'    '||p_sal);
end;

 在命令窗口通过绑定变量调用,相关步骤

var v_name varchar2(10);
var v_sal number;
exec my(7369,:v_name,:v_sal); 
print v_name v_sal;
select :v_name,:v_sal from dual;

 创建一个存储过程,根据提供的雇员编号,查询该雇员的上级领导人的姓名,并返回

 

create or replace procedure mya(eno emp.empno%type,pname  out emp.ename%type)
is 
mgrs emp.mgr%type;
begin
select mgr into mgrs from emp where empno=eno;
select ename into pname from emp where empno=mgrs;
exception
when no_data_found then
dbms_output.put_line('没有员工');
end;

declare 
eno emp.empno%type;
 sname emp.ename%type;
begin
 mya(7369,sname);
dbms_output.put_line(sname);
end;

 定义一个函数,用于计算emp表中某个部门的平均工资。

create or replace function get_avg(dno emp.deptno%type) return number
is 
  getavg emp.sal%type;
begin 
select avg(sal) into getavg from emp where deptno=dno;
return getavg;
end;
select get_avg(10) 平均值 from dual;

写一个函数,传入员工编号,返回所在部门名称 

create or replace function getname(eno emp.empno%type) return varchar
is
  d_name dept.dname%type;
begin
  select dname into d_name from dept where deptno=(select deptno from emp where empno=eno);
  return d_name;
end;
select getname(7369) from dual;

 写一个函数,可以查询某个员工的年收入,包括奖金

create or replace function getsum(eno emp.empno%type) return number
is
  getsum emp.sal%type;
begin
  select sum(nvl(sal+comm,sal))*12 into getsum from emp where empno=eno;
  return getsum;
end;
select getsum(7369) from dual;

 定义函数,输入部门编号,查询出该部门的员工总数。

create or replace function sums(dno emp.deptno%type) return number
is
  counts emp.empno%type;
begin 
select count(*) into counts from emp where deptno=dno;
return counts;
end;
select sums(20) from dual;

定义函数,使用记录类型作为返回类型,根据指定的部门号返回其对应的部门信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值