自定义MySQL函数

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;

时间: 2024-11-08 04:05:08

自定义MySQL函数的相关文章

自定义mysql函数时报错,[Err] 1418 - This function has none of DETERMINISTIC......

今天在我执行自定义mysql函数的SQL时发生了错误,SQL如下: /** 自定义mysql函数 getChildList */delimiter //CREATE FUNCTION `pengwifi_wifi`.`getChildList`(rootId INT)RETURNS varchar(1000) BEGIN DECLARE sTemp VARCHAR(1000); DECLARE sTempChd VARCHAR(1000); SET sTemp = '$'; SET sTempC

数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数

outfile    将数据库的数据导出 select * into outfile 'e://mysqloutfile//1.txt' from 表格名; 备份与还原 不再mysql目录下进行备份,mysqldump -uroot -p 数据库名 +表格名 > 具体的路径名(你要导入到哪里) 如果你想得到多张表的那么就在表格后面加一个表格 还原: 先删除数据库的所有东西 如果删除不了,那么就是还有没有删除干净 新建一个数据库 ,用数据库 找到文件   source +具体的文件;将数据导入 视

第二百八十五节,MySQL数据库-MySQL函数

MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函数:返回字符串的字符长度 SELECT CHAR_LENGTH('欢迎光临'); LENGTH(str)函数:返回字符串的字节长度 -- LENGTH(str)函数:返回字符串的字节长度 SELECT LENGTH('欢迎光临'); CONCAT(str1,str2,...)函数:拼接字符串 --

MySQL函数不能创建的解决方法

MySQL函数不能创建,是一个很麻烦的问题,下面就为您提供了一个解决此问题的方法,如果您也遇到过类似的问题,不妨一看. http://database.51cto.com/art/201010/229918.htm 在使用MySQL数据库时,有时会遇到MySQL函数不能创建的情况.下面就教您一个解决MySQL函数不能创建问题的方法,供您借鉴参考. 出错信息大致类似: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO S

laravel DB 执行 mysql函数或者字段

使用laravel框架中的DB查询mysql数据库的时候,综合遇到执行mysql函数或者,自定义字段,一般情况下DB会把传入的函数当做字段处理 方法如下: DB:raw('函数或者字段'); 例子:DB::raw('rand()').DB::raw('date()')

关于mysql函数GROUP_CONCAT

GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat. 语法: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC |DESC]

mysql 函数和存储过程的学习

#创建存储子程序需要CREATE ROUTINE权限. #· 提醒或移除存储子程序需要ALTER ROUTINE权限.这个权限自动授予子程序的创建者. #· 执行子程序需要EXECUTE权限.然而,这个权限自动授予子程序的创建者.同样,子程序默认的SQL SECURITY 特征是DEFINER,它允许用该子程序访问数据库的用户与执行子程序联系到一起 #-------------------------------------------------------------------------

MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)

知识点六:MySQL函数的创建(13) 内置函数: 自定义函数: 首先查看是否已经开启了创建函数的功能: SHOW VARIABLES LIKE '%fun%'; 如果变量的值是OFF,那么需要开启 set global log_bin_trust_function_creators=1; 创建函数的语法: CREATE FUNCTION 函数名(变量1,变量2--) RETURNS 数据类型 BEGIN --执行的程序代码 RETURN 数据; END; 1 --默认数据 2 CREATE T

MySQL函数的使用

以下列出mysql函数的使用,并不完全,涉及到多少写多少. length(str):返回字符串(str)的字符长度.一个汉字算三个字符,一个数字或字母算一个字符. select length('测试'); -- 6 select length('123abc'); -- 6 char_length(str):返回字符串(str)的字符长度.一个汉字.数字或字母都算一个字符. select char_length('测试'); -- 2 select char_length('123abc');