【Oracle】存储过程的运用

创建一个存储过程,根据提供的雇员姓名(作为过程的参数),将该雇员的工资改为2000;

--1:创建一个存储过程,根据提供的雇员姓名(作为过程的参数),将该雇员的工资改为2000;
create procedure update_sal(v_name emp.ename%type)
is
eno emp.empno%type;
begin 
  select empno into eno from emp where ename=v_name;
  update emp set sal=2000 where empno=eno;
end;
exec update_sal('SMITH');
select * from emp;

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

--2:创建一个存储过程,根据提供的雇员姓名,查询该雇员的上级领导人的姓名,并返回。
create or replace function getnames(v_name emp.ename%type) return varchar
is
  vvname emp.ename%type;
  mgrs emp.mgr%type;
begin
  select mgr into mgrs from emp where ename=v_name;
  select ename into vvname from emp where empno=mgrs; 
  return vvname;
end;
select getnames('SMITH') from dual;

 --3:创建一个存储过程,输入部门号,返回该部门所有雇员的姓名,工资和佣金。 

--3:创建一个存储过程,输入部门号,返回该部门所有雇员的姓名,工资和佣金。 
create or replace procedure selcet_curemp( 
id in emp.deptno%type) is
cursor c1 is select * from emp where deptno = id;
begin
for rec in c1 loop
dbms_output.put_line(rec.empno||' '||rec.empno||' '||rec.job);
end loop;
end;
execute selcet_curemp(10);
create or replace procedure proc(pno emp.deptno%type,list_cur out sys_refcursor)
is 
begin
open list_cur for select ename,sal,comm from emp where deptno=pno;
end;

declare 
vno emp.deptno%type:=&no;
mycur sys_refcursor;
type emp_rec is record(
  pname emp.ename%type,
  psal emp.sal%type,
  pcomm emp.comm%type
);
list_rec emp_rec;
begin
proc(vno,mycur);
loop
fetch mycur into list_rec;
exit when mycur%notfound;
dbms_output.put_line(list_rec.pname||'  '||list_rec.psal);
end loop;
end;

 

 --4:编写一个过程,输入部门号,返回该部门所有雇员信息。

--4:编写一个过程,输入部门号,返回该部门所有雇员信息。 
create or replace procedure get(id in emp.deptno%type) is
 cursor c1 is select * from emp where deptno = id;
begin
for rec in c1 loop
dbms_output.put_line(rec.empno||' '||rec.ename||' '||rec.job||'  '||rec.sal||'  '||rec.comm||'  '||rec.mgr);
end loop;
end;
exec get(30);
  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值