开始Mysql(关于存储过程)3
涉及到数据库不用存储过程肯定是不行的 下面简单写2个存储过程 接着前面的数据库
1 不带输出参数的 (添加用户)
drop procedure if exists proc_add;
create procedure proc_add(uid varchar(50),pwd varchar(20),name varchar(20))
begin
insert into T_user (U_uid,U_pwd,U_name) values(uid,pwd,name);
end;
call proc_add('abcd','123','用户1');
select * from T_user;
create procedure proc_add(uid varchar(50),pwd varchar(20),name varchar(20))
begin
insert into T_user (U_uid,U_pwd,U_name) values(uid,pwd,name);
end;
call proc_add('abcd','123','用户1');
select * from T_user;
注意几点:
变量不需要加@
存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”
不用加as关键字
存储过程中包含多条 MySQL 语句,则需要 begin end 关键字。
存储过程中的每条语句的末尾,都要加上分号 “;”
不能在 MySQL 存储过程中使用 “return” 关键字。
2 带输出参数的存储过程 (用户登陆)
drop procedure if exists proc_login;
create procedure proc_login(
uid varchar(50),
pwd varchar(20),
out back int -- 0失败 1成功
)
begin
select U_uid from t_user where U_uid=uid and U_pwd=pwd;
set @rowcount=found_rows();
if (@rowcount>0) then
set back=1;
else
set back=0;
end if;
end;
call proc_login('admin','123',@b);
select @b as bbb;
create procedure proc_login(
uid varchar(50),
pwd varchar(20),
out back int -- 0失败 1成功
)
begin
select U_uid from t_user where U_uid=uid and U_pwd=pwd;
set @rowcount=found_rows();
if (@rowcount>0) then
set back=1;
else
set back=0;
end if;
end;
call proc_login('admin','123',@b);
select @b as bbb;
返回select操作的行数用found_rows()函数;insert、update、delete等操作影响的行数用row_count()函数。