1. 程式人生 > >自定義MySQL函數

自定義MySQL函數

ffffff 現在 sql code begin 函數 limit round 其他

1、MySQL創建函數語法:

CREATE
  [DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body

func_parameter:
    param_name type

type:
    Any valid MySQL data type

routine_body:
    Valid SQL routine statement

註意:自定義函數不能跨庫使用

mysql> DELIMITER //
mysql> CREATE FUNCTION Ver_Compare (n INT, m INT) -> RETURNS VARCHAR(50) #聲明返回的數據類型 -> BEGIN ->   DECLARE s VARCHAR(50); ->   IF n = m THEN SET s = equals; ->   ELSE ->     IF n > m THEN SET s = greater; ->     ELSE SET s = less;
->     END IF; ->     SET s = CONCAT(is , s, than); ->   END IF; ->   SET s = CONCAT(n, , s, , m, .); ->   RETURN s; #一個實際的返回值
-> END // mysql> DELIMITER ;

由上述例子,不難看出,自定義函數的創建其實和create存儲過程還是很相似的。

2、函數調用

  自定義函數雖然在創建定義上和存儲過程類似,但調用時卻有些許的不一樣。

mysql> call Ver_Compare(1
,2); ERROR 1305 (42000): PROCEDURE db1.Ver_Compare does not exist mysql> set @ax = Ver_Compare(1,2); mysql> select @ax; +-------------------+ | @ax | +-------------------+ | 1 is less than 2. | +-------------------+

在我們調用函數的時候,函數需要出現在 = 的右邊(也就是說調用函數需要有變量接收其結果

3、其他

  >查看所有自定義函數:show function status\G;

  >刪除指定自定義函數:drop function func_name;

自定義MySQL函數