【数据库】Function&Procedure&Package

时间:2022-04-14 05:29:36

Function/Procedure都是可独立编译并存储在数据库中的,区别是Function有返回值。

Package则是数据和过程、函数的集合体。

CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
  SET @x = 0;
  REPEAT SET @x = @x   1; UNTIL @x > p1 END REPEAT;
END;

 

mysql> delimiter //

mysql> CREATE PROCEDURE dorepeat(p1 INT)
    -> BEGIN
    ->   SET @x = 0;
    ->   REPEAT SET @x = @x   1; UNTIL @x > p1 END REPEAT;
    -> END
    -> //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL dorepeat(1000);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x;
 ------ 
| @x   |
 ------ 
| 1001 |
 ------ 
1 row in set (0.00 sec)

 

mysql> CREATE FUNCTION hello (s CHAR(20))
mysql> RETURNS CHAR(50) DETERMINISTIC
    -> RETURN CONCAT(‘Hello, ‘,s,‘!‘);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT hello(‘world‘);
 ---------------- 
| hello(‘world‘) |
 ---------------- 
| Hello, world!  |
 ---------------- 
1 row in set (0.00 sec)