定义
存储过程的定义很简单
创建
create procedure pro_name()
begin
.........
end
调用
call pro_name()
主体中一些语句会带有分号,如果你使用 mysql客户端程序来定义一个包含分号字符的存储程序,问题就出现了,默认情况下, mysql用分号作为分隔符,以你必须重新定义暂时性的分隔符。
这样就将//作为分隔符了,定义完过程后,记得更改回来。
mysql> delimiter //
示例
mysql> delimiter //
mysql> create procedure sim(OUT pa INT)
-> begin
-> select count(*) INTO pa from user;
-> end//
Query OK, 0 rows affected
mysql> delimiter ;
mysql> call sim(@a);
Query OK, 1 row affected
mysql> select @a;
+----+
| @a |
+----+
| 21 |
+----+
1 row in set
mysql>
存储过程大致分为,有入参无出参 ;有入参有出参;无入参无出参;无入参有出参,出参是列表
。给出简单的示例。
数据库中有user表,表中有id,name,status三个字段
只有入参
CREATE PROCEDURE inp (IN pa VARCHAR(20)) begin insert into user(name) values(pa);end//
有入有出
CREATE PROCEDURE inandout (IN inpa INT ,OUT outpa VARCHAR(20)) begin select name INTO outpa from user where id=inpa;end//
只有出参,且为列表
CREATE PROCEDURE outp () begin select * from user;end//