Oracle存储过程和存储函数语法介绍,实例应用

 存储过程与存储函数的区别

    存储函数:可以通过return语句返回函数值;主要用于计算并返回一个值;

    存储过程:不能;存储过程没有直接返回值,主要用于执行操作;

由于通过out参数,存储过程也可以返回函数值,所以存储过程和存储函数已经没有太大的区别了。而存储函数仍然存在,是由于oracle不断升级,需要实现向下兼容,所以存储函数就一直存留着。

创建表并添加数据


create table EMP
(
  empno VARCHAR2(16) not null,
  ename VARCHAR2(16) not null,
  sal   NUMBER,
  comm  NUMBER,
  job   VARCHAR2(16),
  deptno NUMBER
);

insert into EMP (empno, ename, sal, comm, job, deptno) values ('7839', 'xiaoming', 1200, 500,  'Actor', 12);
insert into EMP (empno, ename, sal, job, deptno) values ('7566', 'xiaowang', 800, 'Lawyer', 12);
commit;

1)存储过程:

语法:

create [or replace] procedure 存储过程名 [(参数1 in|out 类型,参数2 in|out 类型..)] --in输入参数,out输出参数
is|as       --相当于PLSQL语句中的declare,用来声明变量,游标等,但是不可以省略
      变量名 类型; --声明变量
begin
      程序代码体    --业务逻辑
end;
/

创建存储过程:

create or replace procedure addSal(pename in emp.ename%type)
as
  beforesal emp.sal%type;
  aftersal emp.sal%type;
begin

  select sal into beforesal from emp where ename=pename;

  aftersal:=beforesal+100;
  update emp set sal=aftersal where ename=pename; 

end;
/

测试:

declare
v_a EMP.ENAME%type;
v_b EMP.ENAME%type;
begin
  v_a :='xiaoming';
  v_b :='xiaowang';
  addSal(v_a);
  addSal(v_b);
end;
/

2)存储函数:

语法:


create [or replace] function 存储函数的名称 [(参数1 in|out 类型,参数2 in|out 类型..)] --in输入参数,out输出参数
return 参数类型 
is|as           --相当于PLSQL语句中的declare,用来声明变量,游标等,但是不可以省略
变量名 类型; --声明变量
begin
    程序代码体    --业务逻辑
end;
/

创建存储函数:

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

测试:

declare
v_a number;
v_b number;
begin 
  v_a:=nianxin(7839);
  v_b:=nianxin(7566);
   dbms_output.put_line('年薪:'||v_a);
   dbms_output.put_line('年薪:'||v_b);
end;
/

简单的入门语法就是这样的,剩下的就是加逻辑和业务啥的。看自己需要往代码块加内容就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值