/* 7-22 知识总结? 1. 存储过程 2.函数 3.包 */ /*1.什么是存储过程? 语法? 存储过程:类似于Java中的方法;完成一个特定的功能,一系列代码 (增删改操作和一些逻辑判断,select ... Into 变量)构成;存在哪?存在数据库服务器上 特点: 1、预编译 2、可以重用 3、单独的设置权限 4、减轻网络的流量; 二、创建过程: 1、无参 2、输入参数 3、输入和输出参数 三、调用过程: 1、语句块中 2、Call调用 3、Execute 调用(命令行调用) */ -- create or replace procedure re1 as begin insert into emp (empno,ename,job,sal) values(9100,'嬴荡', '秦王', 1200); insert into emp (empno,ename,job,sal) values(9101,'秦孝公','诸侯',1000); commit; --设置自动提交 end; create or replace procedure re2 as begin delete from emp where empno=9100; delete from emp where empno=9101; commit; end; -- 调用 无参数的存储过程。 -- 1.begin end; 2.call 名字(); 3.命令行 excute 名字(); begin re1; end; begin re2; end; select * from emp; call re1(); call re2(); -- 创建有参数的储存过程? create or replace procedure re3(id1 number,id2 number) --注意 这里是没有分号的! as begin insert into emp (empno,ename,job)values(id1,'紫霞','败家'); insert into emp (empno,ename,job)values(id2,'至尊宝','赚钱'); commit; end; create or replace procedure re4(id1 number,id2 number) as begin delete from emp where empno in (id1 ,id2); commit; end; call re3(1111,2222); call re4(1111,2222); select * from emp; begin re3(1,2); end; begin re4(1,2); end; -- 统计数据表中的个数 临时变量的作用 create or replace procedure re3(id1 number,id2 number) --注意 这里是没有分号的! as v_count emp.empno%type; --定义临时变量 目的是统计一共多少数据 begin insert into emp (empno,ename,job)values(id1,'紫霞','败家'); insert into emp (empno,ename,job)values(id2,'至尊宝','赚钱'); commit; select count(*) into v_count from emp ; dbms_output.put_line(v_count); end; call re3(1,2); call re4(1,2); select count(*) from emp; -- 录入后 统计数据表中的个数 定义 id 和姓名 四个参数 create or replace procedure re5( id1 in number, id2 in number, name1 in emp.ename%type, name2 in emp.ename%type, n1 out number -- 返回的参数 定义的n1 ) as begin insert into emp (empno,ename,job)values(id1,name1,'败家'); insert into emp (empno,ename,job)values(id2,name2,'赚钱'); commit; select count(*) into n1 from emp; end; declare v_count number(2); begin re5(3,4,'卢本伟','马飞飞',v_count); dbms_output.put_line('总数量:'||v_count); end; call re4(3,4); select * from emp;