mysql中创建函数

MySql创建函数

一、查看创建函数的功能是否开启: 
mysql> show variables like ‘%func%‘; 
+-----------------------------------------+-------+ 
| Variable_name                            | Value | 
+-----------------------------------------+-------+ 
| log_bin_trust_function_creators | ON    | 
+-----------------------------------------+-------+ 
1 row in set (0.02 sec)

二、如果Value处值为OFF,则需将其开启。 
mysql> set global log_bin_trust_function_creators=1;

三、创建函数时,先选择数据库, 
mysql> use xxx; 
Database changed 
delimiter $$是设置 $$为命令终止符号,代替分号,因为分号在begin...end中会用到; 
mysql> delimiter $$ 
CREATE FUNCTION first_func(param1 varchar(5),parmam2 varchar(5),param3 varchar(10)) 
RETURNS TINYINT 
BEGIN 
   RETURN 1; 
END 
函数创建成功后需恢复分号为命令终止符号。 
mysql> delimiter ;

四、测试: 
mysql> select first_func(‘aaa‘,‘bbb‘,‘ccc‘); 
+-------------------------------+ 
| first_func(‘aaa‘,‘bbb‘,‘ccc‘) | 
+-------------------------------+ 
|                             1 | 
+-------------------------------+ 
1 row in set (0.47 sec)

五、删除函数: 
mysql> drop function first_func ; 
Query OK, 0 rows affected (0.11 sec)

六、查看函数 
1) show function status 
显示数据库中所有函数的基本信息  
2)查看某个具体函数

mysql>show create function function;

以上出自:http://blog.csdn.net/tfhui928/article/details/6058074

举例:

--查看创建函数功能是否开启
SHOW VARIABLES LIKE ‘%func%‘;

--开启创建函数功能,将variable_name设置为1
SET GLOBAL log_bin_trust_function_creators=1;

--查看数据库中所有函数
SHOW FUNCTION STATUS;

--查看具体的函数
SHOW CREATE FUNCTION test_func

--删除函数
DROP FUNCTION test_func

--创建查询函数
DELIMITER $$
CREATE FUNCTION test_func(param1 VARCHAR(20),param2 INT,param3 CHAR(5))
RETURNS  INT
BEGIN
    DECLARE ret_val INT;--定义变量
    SELECT MAX(id) INTO ret_val FROM test;
 RETURN ret_val;
 
END

--执行函数
SELECT test_func(‘var‘,45,‘char‘);

--创建赋值函数
DELIMITER $$
CREATE FUNCTION test_func1(param1 INT,param2 VARCHAR(20))
RETURNS INT
BEGIN
    DECLARE return_val INT;
    DECLARE val INT DEFAULT 2;
    IF val>1 THEN
        SET return_val = val;
    ELSE
        SET return_val = 1;
    END IF;
 RETURN return_val;
END

--执行函数
SELECT test_func1(1,‘admin‘);

转自:http://my.oschina.net/u/1273696/blog/181995

时间: 2024-08-25 02:12:43

mysql中创建函数的相关文章

mysql中创建函数遇到1418错误

错误信息: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 解决办法: 执行sql语句:set global lo

MySql中创建存储过程

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 一.MySQL 创建存储过程 "pr_add" 是个简单的

mysql 中创建存储过程

mysql中创建存储过程和存储函数虽相对其他的sql语言相对复杂,但却功能强大,存储过程和存储函数更像是一种sql语句中特定功能的一种封装,这种封装可以大大简化外围调用语句的复杂程度. 首先以表employee为例写一个简单的sql存储过程: 下边通过创建一个存储过程实现:输入性别,找出与输入性别相匹配的人的平均年龄,并将平均年龄输出. 这里首先通过delimiter &&,将sql语句的结束符换成&&(默认sql语句的结束符是;) 然后如下所示输入: 此时可以把语句的结束

Mysql中的函数

阅读目录 什么是函数 与存储过程的区别 mysql自带函数 自定义函数 什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中使用,而存储过程不能: 函数一般用于实现较简单的有针对性的功能(如求绝对值.返回当前时间等),存储过程用于实现复杂的功能(如复杂的业务逻辑功能): mysql自带函数 mysql本身已经实现了一些常见的函数,如数学函数.字符串函

MySQL中concat函数(连接字符串)

MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串.一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的con

MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容

本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 |

MySQL中ROW_NUMBER()函数的替换实现

SELECT t.*, @RowNum := @RowNum + 1 AS RowNum FROM t, (SELECT @RowNum := 0) AS myRows MySQL中没有ROW_NUMBER()函数,可以用以上代码替换. MySQL中ROW_NUMBER()函数的替换实现

MySQL中concat函数

使用方法:CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串.一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的concat函数可以连接一个或者多

循环中创建函数的问题

//糟糕的例子 var add_handlers = function(nodes){ var i; for(i = 0; i < nodes.length; i++){ nodes[i].onclick = function (e){ alert(i); }; } }; //结束糟糕的例子 //改进的例子 var add_handlers = function(nodes){ var helper = function(i){ return function(e){ alert(i); } }