存储过程没有返回值,存储函数有返回值
存储过程
存储过程的参数类型有这几种:
- 没有参数(无参数无返回值)
- 带
in
(有参数无返回值) - 带
out
(无参数有返回值)跟着——在查询语句后面加上into
看下面的例子 - 即带
in
又带out
(有参数有返回值) - 带
inout
(有参数有返回值)
语法形式
sqlCREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型)
[characteristics……]
BEGIN
存储过程体
END
复制
在执行上面代码的时候,因为存储过程体中的sql语句有;
而执行到;
就结束了,但是我们还没有到我们存储过程的结束。所有我们要设置结束标志
设置结束标志: DELIMITER 新的结束标志
那么上面的代码可以这样写
sqlDELIMITER $
CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名 参数类型)
[characteristics……]
BEGIN
存储过程体
END $
DELIMITER ;#从新把原来的;恢复
复制
例:OUT
sqlDELIMITER //
CREATE PROCEDURE show_min_salary(OUT ms DOUBLE)
BEGIN
SELECT MIN(salary) INTO ms
FROM employees;
END //
DELIMITER ;
复制
characteristics
表示创建存储过程时对存储过程的约束条件 约束条件如下:
例:
sqlDELIMITER $
CREATE PROCEDURE select_min_salary()
BEGIN
SELECT MIN(salary)
FROM emp;
END $
DELIMITER ;
复制
调用——CALL select_min_salary();
CALL 存储过程
传入参数的时候可以自己定义参数,怎么设置参数,后面一节会讲解,暂时这样设置SET @变量名
存储函数
创建存储函数与创建存储过程差不多 语法形式:
sqlCREATE FUNCTION 函数名(参数名 参数类型)
RETURNS 返回类型
约束条件
BEGIN
函数体
END
复制
调用存储函数 SELECT 函数名(实参列表)
查看
查看创建信息: SHOW CREATE {PROCEDURE | FUNCTION} 存储过程名或函数名
查看状态信息: SHOW {PROCEDURE | FUNCTION} STATUS
——这样会查看所有的 我们可以用模糊查询 SHOW {PROCEDURE | FUNCTION} STATUS LIKE '名字'
也可以从information_schema.Routines表
中查看
sqlSELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME='存储过程或函数的名' [AND ROUTINE_TYPE = {'PROCEDURE|FUNCTION'}];
复制
不写写了,直接截图: