1.3 IN、OUT、INOUT参数
(1)、带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 |
因为;分会冲突,所以要加delimiter //。将//设置为结束运行符号
如下:

调用:
| //调用并输出结果 CALL SP_SEARCH('林炳文') |
结果

(2)、带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; |

(3)、带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; |
输出结果:

1.4、存储过程体
存储过程体中可以使用各种sql语句和过程式语句的组合,来封装数据库应用中复杂的业务逻辑和处理规则,以实现数据库应用的灵活编程。下面主要介绍几个用于构造存储过程体的常用语法元素。
1、局部变量
在存储过程体中可以声明局部变量,用来存储存储过程体中临时结果。
| DECLARE var_name[,…] type [DEFAULT value] Var_name:指定局部变量的名称 Type:用于声明局部变量的数据类型 default子句:用于为局部变量指定一个默认值。若没有指定,默认为null. |
如:
| Declare cid int(10); |
使用说明:
局部变量只能在存储过程体的begin…end语句块中声明。










