什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。
存储过程的好处:
1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。
2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。
3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
下面通过一个列子理解一下存储过程。
一、提出需求
查询得到猫咪或者狗子的数量, 如果传入的是0就猫咪,否者为狗子。(以oracle为例)
二、准备数据库表和存储过程
create table animals( id number primary key, name varchar(10), type char(2) |
insert into animals(id,name,type) values(1,'summer','猫'); insert into animals(id,name,type) values(2,'doubao','狗'); insert into animals(id,name,type) values(3,'欧欧','猫'); |
-- 创建存储过程(查询得到猫咪或者狗子的数量, 如果传入的是0就猫咪,否者为狗子) CREATE OR REPLACE PROCEDURE ges_animals_count(type_id IN number, animals_count OUT number) IS begin IF type_id=0 THEN SELECT COUNT(*) into animals_count FROM animals WHERE animals.type='猫'; ELSE SELECT COUNT(*) INTO animals_count FROM animals WHERE animals.type='狗' ; end if ; END ges_animals_count; |
-- 执行存储过程 begin -- Call the procedureges_animals_count(type_id => :type_id, animals_count => :animals_count); end; |