# MySQL编程基础——自定义函数返回值
2017-07-30 13:53
351 查看
MySQL除了自带的系统函数,也允许用户自定义函数。创建自定义函数基本的语法格式为:
以下函数自定义函数get_name_fn()用于根据学生的学号返回学生姓名:
“##”标记的部分是有问题的语法,一般保持返回值数据类型前后一致就行了,输入:
参数no和参数role是学生的学号和学生角色,返回结果为:
但是当输入:
会出现以下错误:
出现这样的错误原因是返回参数name的字符集设置不对,函数体中如果执行else语句则返回的name是中文,之前定义函数时并没有设置返回参数的中文编码格式,所以需要进行修改(删除原来的函数后重新定义):
然后输入:
返回:
说明函数的执行是正确的。
create function 函数名(参数名1 类型, 参数名2 类型...) return 参数类型 [函数选项] begin 函数体 return 参数; end 分隔符
以下函数自定义函数get_name_fn()用于根据学生的学号返回学生姓名:
-> delimiter $$ -> create function get_name_fn(no int, role char(20)) returns char(20) ##有问题的语法 -> reads sql data -> begin -> declare name char(20);##有问题的语法 -> if(role = 'student') then -> select student_name into name from mytest.student where student_num = no; -> else set name = '输入错误'; -> end if; -> return name; -> end -> $$
“##”标记的部分是有问题的语法,一般保持返回值数据类型前后一致就行了,输入:
-> delimiter ; -> select get_name_fn(16007, 'student');
参数no和参数role是学生的学号和学生角色,返回结果为:
+-------------------------------+ | get_name_fn(16007, 'student') | +-------------------------------+ | Macy | +-------------------------------+ 1 row in set (0.00 sec)
但是当输入:
select get_name_fn(16007, 'stu');
会出现以下错误:
select get_name_fn(16007, 'stu'); ERROR 1366 (HY000): Incorrect string value: '\xE8\xBE\x93\xE5\x85\xA5...' for column 'name' at row 1
出现这样的错误原因是返回参数name的字符集设置不对,函数体中如果执行else语句则返回的name是中文,之前定义函数时并没有设置返回参数的中文编码格式,所以需要进行修改(删除原来的函数后重新定义):
-> delimiter $$ -> create function get_name_fn(no int, role char(20)) returns char(20) character set utf8 ##修改之后 -> reads sql data -> begin -> declare name char(20) character set utf8; ##修改之后 -> if(role = 'student') then -> select student_name into name from mytest.student where student_num = no; -> else set name = '输入错误'; -> end if; -> return name; -> end -> $$
然后输入:
select get_name_fn(16007, 'stu');
返回:
+-------------------------------+ | get_name_fn(16007, 'stu') | +-------------------------------+ | 输入错误 | +-------------------------------+ 1 row in set (0.00 sec)
说明函数的执行是正确的。
相关文章推荐
- Python自定义函数基础:获取函数单返回值和多返回值
- day09--函数返回值、定时器基础
- C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
- [原创]SQL表值函数:返回自定义时间段的日期数据
- C语言基础学习7:返回指针值的函数
- awk基础05-自定义函数和脚本
- 复习基础--JAVA多线程-获取函数返回结果
- 自定义函数中返回表的例子
- Python基础(二)自定义函数
- asp自定义函数可以返回数组或者对象
- 洗礼灵魂,修炼python(20)--自定义函数(1)—基础概念
- oracle自定义函数返回表类型
- PHP基础12-自定义函数截取中文字符串
- 自定义函数实现输入:学号 返回:姓名。
- PHP基础函数、自定义函数以及数组
- 在 Excel 中编写自定义函数——返回多个值
- C++基础---有返回值类型函数(返回非引用类型)
- 学习笔记---自定义函数基础
- Python自定义函数基础:参数预定义值
- SQL Server逗号分隔字符串通过户自定义函数返回临时表