首页 > 技术文章 > plsql 存储过程 介绍。

ZXF6 2019-07-22 21:00 原文

/* 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;

 

推荐阅读