mysql 存储过程和函数的区别

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)

猜你喜欢

转载自blog.csdn.net/qq_27474277/article/details/74910003