存储过程和存储函数示例

存储过程

存储过程有输入和输出两种参数,

输入参数示例1

示例表:oracle的scott用户下的emp表

create or replace procedure 
   update_sal(vempno in number,vcount in number)
is
   -- 声明变量记录当前工资
   cur_sal number;
begin
   -- 先查询涨工资前的工资
   select sal into cur_sal from emp where empno = vempno;
   dbms_output.put_line('涨工资前: '||cur_sal);
   -- 更新工资
   update emp set sal = sal + vcount where empno = vempno;
   -- 涨工资后的工资
   dbms_output.put_line('涨工资后: '||(cur_sal+vcount));
   commit;
end; 

备注:1.传入参数不能指定长度 2.参数使用驼峰命名,正例:sysCode,反例:sys_code

调用存储过程:

--调用方法一
call update_sal(7269,100)
--调用方法二
begin
  update_sal(7369,100);
end;
输入参数示例二
create or replace procedure addSal(pempno in emp.empno%type)
as
  pname emp.ename%type;
  beforeSal emp.sal%type;
  afterSal emp.sal%type;
begin
  select ename,sal into pname,beforeSal from emp where empno=pempno;
  afterSal:=beforeSal+100;
  update emp set sal=afterSal where empno=pempno;
  dbms_output.put_line('姓名:'||pname||'涨前工资:'||beforeSal||'   '||'涨后工资:'||afterSal);
end;
输出参数示例

示例表:oracle的scott用户下的emp表

create or replace procedure year_sal(vempno in number,vyearsal out number)
as
begin
  select sal*12+nvl(comm,0) into vyearsal from emp where empno=vempno;
end;

调用存储过程:

declare
  yearsal number;
begin
  year_sal(7369,yearsal);
  dbms_output.put_line(yearsal);
end;

存储函数

存储函数只有输入参数,但必须有一个返回值,需要提前声明返回类型

create or replace function queryAnnalSal(pempno in number)
return number
as
  psal emp.sal%type;
  pcomm emp.comm%type;
begin
  select sal,comm into psal,pcomm from emp where empno=pempno;
  return psal*12+nvl(pcomm,0);
end;

调用存储函数:需要定义一个参数接收返回结果

declare
  res number;
begin
  res := queryAnnalSal(7369);
  dbms_output.put_line(res);
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值