存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
存储过程大体语法结构:
delimiter //
create procedure procedurename(in myname varchar(20),out myid int,inout sex char)
begin
declare i.....
set 赋值语句.....
sql语句......
if ...
while do...
loop....
end
//
整个存储过程大体结构如上
调用存储过程:
set @myname=‘jason‘;
set @myid=1;
set @sex=‘男‘;
call procedurename(@myname,@myid,@sex);
删除存储过程:
drop procedure procedurename;
整个存储过程从创建到删除,大体流程就是这样的
下面详细解释:
delimiter//
create procedure pname(in,inout,out)
begin
end
//
删除存储过程f:drop procedure pname;
delimiter//
create PROCEDURE selc(in myid INT,IN myname varCHAR(20))
BEGIN
SELECT * FROM proc WHERE id=myid AND username=myname;
INSERT INTO proc (username,id)VALUES(‘chen‘,3);
END
//
DROP PROCEDURE selc;
set @myid=1;
set @myname=‘zhang‘;
call selc(@myid,@myname);
SELECT * FROM proc;
delimiter//
create PROCEDURE outselec(out myname varchar(20),in myid int)
BEGIN
SELECT username INTO myname FROM proc where id=myid;#username into myname是将查询出来的username值赋值给myname参数
end
//
DROP PROCEDURE outselec;
set @myname=‘‘;
set @myid=1;
call outselec(@myname,@myid);
SELECT @myname username;
输入输出参数的测试
delimiter //
create procedure p_inout ( INOUT num int )
begin
select num;
set num=100;
select num;
end;
//
delimiter ;
set @num=200;
call p_inout(@num)
原文:https://www.cnblogs.com/jasonboren/p/10819331.html