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
--------------待续
原文:https://www.cnblogs.com/adamgq/p/12335685.html