和存储过程的区别:
存储过程:返回值任意 主要用于批量增删改
函数:有且只有一个返回值 主要用来查某个值
1.创建:
方法类型
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
不添加可能会报1418错误
function中的变量可以用局部变量或者用户变量定义
例子1:无参数,用局部变量
DELIMITER $$ CREATE FUNCTION fun_test_no_param() RETURNS VARCHAR(20) #起名字时最好能与表内属性分开避免歧义 DETERMINISTIC #创建方法时需要确认方法类型,否则会出现1418错误 BEGIN DECLARE f_id INT DEFAULT 1; DECLARE f_username VARCHAR(20); SELECT username INTO f_username FROM userinfo WHERE uid = f_id; RETURN f_username; END $$ DELIMITER ;
#使用
SELECT fun_test_no_param();
例子2:有参数,用用户变量
DELIMITER $$ CREATE FUNCTION fun_test_param(f_uid INT) RETURNS VARCHAR(20) #起参数名字时最好能与表内属性分开避免歧义 DETERMINISTIC BEGIN SET @f_username = 'aaa'; #这句不要也可以,用户变量可以直接在sql语句中直接创建赋值。 SELECT username INTO @f_username FROM userinfo WHERE uid = f_uid; RETURN @f_username; END $$ DELIMITER ;
#使用 SELECT fun_test_param(1);
2. 查看:
show create function 方法名
3. 删除:
drop function 方法名字;