牛骨文教育服务平台(让学习变的简单)
博文笔记

MySQL 创建函数(Function)

创建时间:2014-09-30 投稿人: 浏览次数:24811

目标

如何在MySQL数据库中创建函数(Function)


语法

CREATE FUNCTION func_name ( [func_parameter] ) //括号是必须的,参数是可选的
RETURNS type
[ characteristic ...] routine_body
  • CREATE FUNCTION 用来创建函数的关键字;
  • func_name 表示函数的名称;
  • func_parameters为函数的参数列表,参数列表的形式为:[IN|OUT|INOUT] param_name type
  1. IN:表示输入参数;
  2. OUT:表示输出参数;
  3. INOUT:表示既可以输入也可以输出;
  4. param_name:表示参数的名称;
  5. type:表示参数的类型,该类型可以是MySQL数据库中的任意类型;
  • RETURNS type:语句表示函数返回数据的类型;
  • characteristic: 指定存储函数的特性,取值与存储过程时相同,详细请访问-MySQL存储过程使用;


示例

创建示例数据库、示例表与插入样例数据脚本:

create database hr;
use hr;

create table employees
(
	employee_id int(11) primary key not null auto_increment,
	employee_name varchar(50) not null,
	employee_sex varchar(10) default "男",
	hire_date datetime not null default current_timestamp,
	employee_mgr int(11),
	employee_salary float default 3000,
	department_id int(11)
);


insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("David Tian","男",10,7500,1);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Black Xie","男",10,6600,1);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Moses Wang","男",10,4300,1);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Rena Ruan","女",10,5300,1);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Sunshine Ma","女",10,6500,2);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Scott Gao","男",10,9500,2);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Warren Si","男",10,7800,2);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Kaishen Yang","男",10,9500,3);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Simon Song","男",10,5500,3);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Brown Guan","男",10,5000,3);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Eleven Chen","女",10,3500,2);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Cherry Zhou","女",10,5500,4);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Klause He","男",10,4500,5);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Maven Ma","男",10,4500,6);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Stephani Wang","女",10,5500,7);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Jerry Guo","男",10,8500,1);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Gerardo Garza","男",10,25000,8);
insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ("Derek Wu","男",10,5500,5);


select * from employees;


创建函数-根据ID获取员工姓名与员工工资

DELIMITER //
CREATE FUNCTION GetEmployeeInformationByID(id INT)
RETURNS VARCHAR(300)
BEGIN
	RETURN(SELECT CONCAT("employee name:",employee_name,"---","salary: ",employee_salary) FROM employees WHERE employee_id=id);
END//
DELIMITER ;

调用函数

在MySQL——函数的使用方法与MySQL内部函数的使用方法一样。


<更多精彩内容,见后面更新...>

如果您们在尝试的过程中遇到什么问题或者我的代码有错误的地方,请给予指正,非常感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。