mysql的存储过程与自定义函数

一、函数

创建格式:

CREATE FUNCTION sp_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...] routine_body
func_parameter:
    param_name type
 

例子:
DELIMITER //
CREATE FUNCTION Myf() RETURNS VARCHAR(50) 
BEGIN
RETURN '11';
END //
注意:"DELIMITER //" 意思是定义 "//"为批处理结束分隔符,没有这个语句会报错

调用: select Myf();

总结:函数的参数前不能有修饰符如,IN,OUT(不同于存储过程),调用时可直接调用,像系统函数一般使用。

二、存储过程

创建格式:

CREATE PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
proc_parameter:
    [ IN | OUT | INOUT ] param_name type
IN用于说明是传入参数,OUT为返还结果的参数(即开始时没有值,调用后有值),INOUT则充当两者的角色
例子:
DELIMITER //
CREATE PROCEDURE mySP(a INT(2),OUT b INT(2))
BEGIN
SET b=110;
SELECT a+b;
END //
调用:
CALL mySP(1,@b);
SELECT @b;
总结:IN,OUT,INOUT用于指定参数的类型,OUT参数的赋值使用set操作符(与局部变量赋值类似),调用时使用call,out参数要有@修饰。
 
要查看自定义的Function和Procedure,则可查看系统库mysql的proc表,那里收集了所有用户定义的函数和存储过程
原文地址:https://www.cnblogs.com/tangyue/p/3684946.html