博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[置顶] MySQL -- 创建函数(Function
阅读量:7002 次
发布时间:2019-06-27

本文共 3431 字,大约阅读时间需要 11 分钟。

目标

如何在中创建函数(Function)

 

语法

[sql]   
 
  1. CREATE FUNCTION func_name ( [func_parameter] ) //括号是必须的,参数是可选的  
  2. RETURNS type  
  3. [ 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: 指定存储函数的特性,取值与存储过程时相同,;

 

示例

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

 

[sql]   
 
  1. create database hr;  
  2. use hr;  
  3.   
  4. create table employees  
  5. (  
  6.     employee_id int(11) primary key not null auto_increment,  
  7.     employee_name varchar(50) not null,  
  8.     employee_sex varchar(10) default '男',  
  9.     hire_date datetime not null default current_timestamp,  
  10.     employee_mgr int(11),  
  11.     employee_salary float default 3000,  
  12.     department_id int(11)  
  13. );  
  14.   
  15.   
  16. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('David Tian','男',10,7500,1);  
  17. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Black Xie','男',10,6600,1);  
  18. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Moses Wang','男',10,4300,1);  
  19. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Rena Ruan','女',10,5300,1);  
  20. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Sunshine Ma','女',10,6500,2);  
  21. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Scott Gao','男',10,9500,2);  
  22. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Warren Si','男',10,7800,2);  
  23. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Kaishen Yang','男',10,9500,3);  
  24. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Simon Song','男',10,5500,3);  
  25. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Brown Guan','男',10,5000,3);  
  26. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Eleven Chen','女',10,3500,2);  
  27. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Cherry Zhou','女',10,5500,4);  
  28. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Klause He','男',10,4500,5);  
  29. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Maven Ma','男',10,4500,6);  
  30. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Stephani Wang','女',10,5500,7);  
  31. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Jerry Guo','男',10,8500,1);  
  32. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Gerardo Garza','男',10,25000,8);  
  33. insert into employees(employee_name,employee_sex,employee_mgr,employee_salary,department_id) values ('Derek Wu','男',10,5500,5);  
  34.   
  35.   
  36. select * from employees;  

 

 

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

 

[sql]   
 
  1. DELIMITER //  
  2. CREATE FUNCTION GetEmployeeInformationByID(id INT)  
  3. RETURNS VARCHAR(300)  
  4. BEGIN  
  5.     RETURN(SELECT CONCAT('employee name:',employee_name,'---','salary: ',employee_salary) FROM employees WHERE employee_id=id);  
  6. END//  
  7. DELIMITER ;  

 

 

调用函数

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

 

你可能感兴趣的文章
WebSocket的原理及运行机制
查看>>
您有一份AndroidX升级指南未领取
查看>>
前端调试入门
查看>>
Linux也有后悔药,五种方案快速恢复你的系统
查看>>
一份Cocoapods支持多个target
查看>>
Swift 中的 String 和 Substring 如何工作
查看>>
iOS 之 Protocol 协议 委托 代理 详解
查看>>
FMDB 使用方法
查看>>
Git使用笔记
查看>>
初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息
查看>>
XXL-CRAWLER v1.1.0 发布了
查看>>
Spring Boot 中使用 Java API 调用 Elasticsearch
查看>>
HTTP/3 来啦,你还在等什么?赶紧了解一下
查看>>
一个合格的Webpack4配置工程师素养:第二部分
查看>>
利用 EasyWeChat 和 ChatterBot 简单搭建一个公众号「自动回复机器人」
查看>>
关于RxJava在业务上的一些思考
查看>>
MySQL8.0 新特性:Partial Update of LOB Column
查看>>
HTTP的历史
查看>>
对称加密、非对称加密、RSA(总结)
查看>>
Java高阶编程——RxBus 开源,基于 RxJava 的 event bus
查看>>