创建MySql存储过程
内容提要:
首先说说数据库存储过程的优点。然后以MySql为例,说明创建存储过程的方法。
正文:
<一>. 创建数据库存储过程有至少两个明显的优点:
1.将SQL语句存储在数据库中,数据库对SQL语句进行预编译,因此可以提高数据存取速度;
2.将SQL语句与业务逻辑隔离开来,封装到数据库,有数据库进行SQL语句的语法验证,有效防止了数据库访问异常和各种编程过程中可能引发的数据库访问错误。
<二>.创建存储过程的基本方法。
1. MySql创建存储过程的语法。
create procedure procedure_name([ [in |out |inout ] 参数名 数据类形, ...])
begin
sql语句;
...
end;
说明:in类型为输入,out类型为输出,inout为输入输出类型。默认为in类型。存储过程可以不带参数。
假如存储过程包括一条或多条sql语句,需要用begin和end包括起来。
2. 一个简单的创建存储过程的例子。
drop procedure if exists user_add;
create procedure user_add(u_name text,u_id int,u_address text)
begin
insert into employee(name,id,address) values (u_name,u_id,u_address);
end;
该存储过程实现将传递进来的参数值插入到employee表中。(注意表名不需要加单引号!!!)
但是会报错,出现符号查找错误,为什么呢??
原因是MySql命令行下默认以";"作为sql语言结束符。一般情况下我们需要先替换结束符。使用指令:DELIMITER + 新结束符
例如,该存储过程可以改为:
DELIMITER //
drop procedure if exists user_add //
create procedure user_add(u_name text,u_id int,u_address text)
begin
insert into employee(name,id,address) values (u_name,u_id,u_address);
end //
DELIMITER ;
注意DELIMITER和新结束符需要用空格隔开。
后续将补充上MySql的其它具体用法以及如何使用存储过程。