1.创建PROCEDURE
CREATE PROCEDURE 存储过程名 (参数列表)
BEGIN
SQL语句代码块
END
2.写一个最简单的存储过程查询cs.zzm所有数据
create procedure zoucm()
begin
select * from cs.zzm;
end
调用
mysql>call zoucm();
show PROCEDURE status 查看PROCEDURE
show create procedure zoucm 查看PROCEDURE 创建代码
drop PROCEDURE zoucm 删除PROCEDURE
select @NR; 查看输出的变量
3。创建一个有out输出的procedure 输出行数
create procedure zoucm(out hs int)
BEGIN
select count(*) into hs from BK.Customer;
end
call zoucm(@ss) 调用:把hs 赋值个@ss 变量
select @ss 打印查看@ss 变量
4.创建一个有out输出和in输入的procedure
create procedure zoucm(out hs int, in s VARCHAR(20))
BEGIN
select count(*) into hs from BK.Customer where Customer.Province = s;
end
call zoucm(@ss , '台湾省'); 调用:把hs 赋值个@ss 变量,把Customer.Province = '台湾省'
select @ss ; 打印查看@ss 变量
5.DECLARE 申明procedure局部变量
DECLARE var_name[,...] type [DEFAULT value] 例如: DECLARE state int 申明一个state名称的变量
这个语句被用来声明局部变量。
要给变量提供一个默认值,请包含一个DEFAULT子句。
值可以被指定为一个表达式,不需要为一个常数。
如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。
它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。
6。综合实验.
需求:
有表users 里面存放用户信息,有user,pwd其中两个字段。创建procedure用于验证HPH传递过来的user,pwd是否正确。正确out出0,错误out出1.
注意里面涉及到DECLARE 申明procedure局部变量的应用
create procedure login(
in php_user VARCHAR(20),
in php_pwd VARCHAR(20),
out php_state int
)
BEGIN
DECLARE state int;
select count(*) into state from BK.users where `user` = php_user and PWD = php_pwd;
IF(state <> 0) THEN
select 0 into php_state;
ELSE
select 1 into php_state;
END if;
end
测试调用:
mysql>call login('zoucm', '123456', @state);
mysql>select @state ; 查看是否可以通过验证