存储过程编写

1.首先,我需要一张基础表

-- 创建学生表,用于测试,不讲究
create table XUESHENG
(
  id        INTEGER,
  xing_ming VARCHAR2(25),
  yu_wen    NUMBER,
  shu_xue   NUMBER
);

2.给里边插入插入数据若干条

insert into XUESHENG (ID, XING_MING, YU_WEN, SHU_XUE)values (1, 'zhangsan', 70, 70);
insert into XUESHENG (ID, XING_MING, YU_WEN, SHU_XUE)values (2, 'lisi', 80, 80);
insert into XUESHENG (ID, XING_MING, YU_WEN, SHU_XUE)values (3, 'wangwu', 90, 90);

3.1创建一个最简单的,没有传入参数,没有传出参数,没有返回值的存储过程

create or replace procedure proc_xuesheng_insert is
begin
  insert into xuesheng values (4, 'maliu', 90, 90);
  commit;
end proc_xuesheng_insert;
exec proc_xuesheng_insert

  

 3.2创建一个有传入值的存储过程

create or replace procedure proc_xuesheng_yuwen_add(
temp_name in varchar2,--要改分数的学生名
temp_num in number--要加多少分
) 
is
begin
  update xuesheng set xuesheng.yu_wen=xuesheng.yu_wen+temp_num where temp_name=xuesheng.xing_ming;
  commit;
end;
exec proc_xuesheng_yuwen_add('zhangsan',3)

 3.3创建一个有传入值传出值的存储过程

create or replace procedure proc_xuesheng_totalScore(
temp_name in varchar2,
temp_num  out number) is
  num_1 number;
  num_2 number;
begin
  select yu_wen, shu_xue
    into num_1, num_2
    from xuesheng
   where xing_ming = temp_name;
  --dbms_output.put_line(num_1 + num_2);
  temp_num := num_1 + num_2;
end;
var temp_num number
exec proc_xuesheng_totalScore('wangwu',:temp_num)

PL/SQL procedure successfully completed

temp_num
---------
180

--------------待续

猜你喜欢

转载自www.cnblogs.com/adamgq/p/12335685.html