存储过程就是一条或多条的sql语句的集合
当对数据库进行一些列复杂操作时,存储过程可以将这些复杂操作封装成一个代码块,以便重复使用
创建存储过程
DELIMITER // 此语句把分隔符换成//
CREATE PROCEDURE Proc()
BEGIN
SELECT * FROM account;
END;
DELIMITER ;
调用
call Proc();
删除
DROP PROCEDURE Proc;
查看
SHOW PROCEDURE STATUS\G
声明变量
SET @name=”account”;
mysql>select @name;
MySQL存储过程的参数
三种参数类型
IN OUT INOUT
IN参数例子
参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不被返回,为默认值
DELIMITER //
CREATE PROCEDURE demo(IN p1 int)
BEGIN
SELECT p1;
SET p1=2;
SELECT p1;
END;
//
DELIMITER ;
SET @p1=1;
CALL demo(@p1);
select @p1
OUT参数例子
输出参数:该值可在存储过程内部被改变,并可返回
DELIMITER //
CREATE PROCEDURE demo2(OUT p2 int)
BEGIN
SELECT p2;
SET p2=2;
SELECT p2;
END;
//
DELIMITER ;
SET @p2=1;
CALL demo2(@p2);
select @p2;
INOUT参数例子
输入输出参数:调用时指定,并且可被改变和返回
DELIMITER //
CREATE PROCEDURE demo3(INOUT p3 int)
BEGIN
SELECT p3;
SET p3=2;
SELECT p3;
END;
//
DELIMITER ;
SET @p3=1;
CALL demo3(@p3) ;
select @p3;