数据库中使用存储过程

存储过程就是数据库中保存的一系列SQL命令的集合。

使用存储过程可以减轻数据库负担,提高执行性能、减轻网络负担、可防止对表的直接访问、可将数据库的处理黑匣子化。

1、定义存储过程:语法【create procedure 存储过程名

(参数的种类1 参数1 数据类型1[,参数的种类2 参数2 数据类型2....])

begin

处理内容

end】

如:mysql> delimiter //
mysql> create procedure sp_search_customer(in p_nam varchar(20))
-> begin
-> if p_nam is null or p_nam='' then
-> select * from customer;
-> else
-> select * from customer where nam like p_nam;
-> end if;
-> end
-> //

注:delimiter是改变分隔符[;],因为MySQL监视器中默认的分隔符是[;],存储过程本身含有[;],所以为了避免发生歧义,通常用[//]代替。

2、确认数据库中的存储过程:语法【show procedure status\G】

如:mysql> show procedure status\G
*************************** 1. row ***************************
Db: home
Name: sp_search_customer
Type: PROCEDURE
Definer: root@localhost
Modified: 2012-12-20 15:38:12
Created: 2012-12-20 15:38:12
Security_type: DEFINER
Comment:
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.01 sec)

3、确认存储过程的定义:语法【show create procedure 存储过程名\G】

如:mysql> show create procedure sp_search_customer\G
*************************** 1. row ***************************
Procedure: sp_search_customer
sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITU
TION
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_search_cus
tomer`(in p_nam varchar(20))
begin
if p_nam is null or p_nam='' then
select * from customer;
else
select * from customer where nam like p_nam;
end if;
end
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci
1 row in set (0.01 sec)

4、执行存储过程:语法【call 存储过程名(参数,...)】

如:mysql> call sp_search_customer('san')\G
*************************** 1. row ***************************
mid: N0008
nam: san
birth: 1990-09-23
sex: 1
*************************** 2. row ***************************
mid: N0009
nam: san
birth: 1990-09-23
sex: 0
2 rows in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值