mysql 存储过程和函数的区别

来源:互联网 发布:韩国人 知乎 编辑:程序博客网 时间:2024/05/16 14:58

1.函数必须指定返回值,且参数默认为IN类型。
2.存储过程没返回值,参数可以是 IN,OUT,IN OUT类型,有的人可能会理解成OUT 也算是返回值。
3.调用方式:函数 select my_fun() ;过程 call my_pro( ) ;

DEMO    DELIMITER $$DROP FUNCTION IF EXISTS my_fun$$    CREATE        FUNCTION my_fun(a INT(2),b INT(2))        RETURNS INT(4)        BEGIN        DECLARE sum_ INT(2) DEFAULT 0;        SET sum_ = a + b;        RETURN sum_;        END$$DELIMITER ;DELIMITER $$    DROP PROCEDURE IF EXISTS my_pro$$CREATE    PROCEDURE my_pro(IN a INT(2),IN b INT(2) ,OUT c INT(2))    BEGIN    SET c = a + b;    END$$    DELIMITER ;调用    mysql

调用

mysql> call my_pro(1,2,@c);    Query OK, 0 rows affected (0.00 sec)    mysql> select @c;    +------+    | @c   |    +------+    |    3 |    +------+    1 row in set (0.00 sec)    mysql> select my_fun(1,2);    +-------------+    | my_fun(1,2) |    +-------------+    |           3 |    +-------------+    1 row in set (0.00 sec)