摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复的编写相同的SQL语句。而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输。
第一步:造数据
CREATE TABLE t_user ( USER_ID INT NOT NULL AUTO_INCREMENT, USER_NAME CHAR(30) NOT NULL, USER_PASSWORD CHAR(10) NOT NULL, USER_EMAIL CHAR(30) NOT NULL, PRIMARY KEY (USER_ID), INDEX IDX_NAME (USER_NAME) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
第二步:插入数据
第三步:IN、OUT、INOUT参数
a、先说in参数
//创建储存过程.cmd 中运行 CREATE PROCEDURE SP_SEARCH(IN p_name CHAR(20)) BEGIN IF p_name is null or p_name='' THEN SELECT * FROM t_user; ELSE SELECT * FROM t_user WHERE USER_NAME LIKE p_name; END IF; END
再调用:
- //调用并输出结果
- CALL SP_SEARCH(杀手%')
查询结果:
b、再说out参数
//带OUT返回的 CREATE PROCEDURE SP_SEARCH2(IN p_name CHAR(20),OUT p_int INT) BEGIN IF p_name is null or p_name='' THEN SELECT * FROM t_user; ELSE SELECT * FROM t_user WHERE USER_NAME LIKE p_name; END IF; SELECT FOUND_ROWS() INTO p_int; END
调用输出:统计带李开头的人数
#调用并输出结果
CALL SP_SEARCH2('李%',@p_num);
SELECT @p_num;
查询结果:
c、最后说带INOUT的参数
//带INOUT的存储过程 CREATE PROCEDURE sp_inout(INOUT p_num INT) BEGIN SET p_num=p_num*10; END //调用并输出结果 SET @p_num=2; call sp_inout(@p_num); SELECT @p_num;
查询结果如下: