mysql-18-function
#函数
/*
存储过程:可以有0个或多个返回,适合批量插入、批量更新
函数:有且仅有一个返回,适合处理数据后返回一个结果
*/ #一、创建语法
/*
create function 函数名(参数列表) returns 返回类型
begin
函数体
end 参数列表:
参数名 参数类型 */ use myemployees;
set global log_bin_trust_function_creators=TRUE; #案例1:返回公司的员工个数
delimiter &
create function myf1() returns int
begin
declare c int default 0; #定义变量
select count(*) into c #赋值
from employees;
return c;
end &
#调用函数用select
select myf1()& #案例2:根据员工名,返回工资
create function myf2(empName varchar(20)) returns double
begin
set @sal=0;
select salary into @sal
from employees
where last_name=empName;
return @sal;
end & select myf2('Kochhar')& #查看函数
show create function myf2& #删除函数
# drop function myf3; #流程控制结构
/*
顺序结构
分支结构
循环结构
*/ #一、分支
/*
1.if函数
select if(表达式1, 表达式2, 表达式3)
如果表达式1成立,返回表达式2,否则返回表达式3 2.case结构
实现等值或区间判断
case 变量|表达式|字段
when 要判断的值 then 返回的值或语句1;
when 要判断的值 then 返回的值或语句2;
...
else 返回的值n;
end case; */ #案例:创建存储过程,跟据传入的成绩来显示等级
create procedure test_case(
in score int
)
begin
case
when score >=90 and score <= 100 then select 'A';
when score >=80 then select 'B';
when score >=60 then select 'C';
else select 'D';
end case;
end& call test_case(95)& #if结构,实现多重分支
/*
只能应用在begin end中 if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
else 语句n;
end if;
*/ #案例:创建存储过程,跟据传入的成绩返回级别
create function test_if(score int) returns char
begin
if score >= 90 and score <= 100 then return 'A';
elseif score >= 80 then return 'B';
elseif score >=60 then return 'C';
else return 'D';
end if;
end& select test_if(75)& #循环结构
/*
while, loop, repeat
循环控制:
iterate 类似于continue
leave 类似于break 1、while
【标签:】while 循环条件 do
循环体;
end while 【标签】; 2、loop
【标签:】loop
循环体;
end loop 【标签】; 可以用来模拟简单的死循环 3、repeat
【标签:】repeat
循环体;
until 结束条件
end repeat 【标签】;
*/ #案例:批量插入,根据次数插入到admin表中多条记录
use girls&
drop procedure pro_while1&
create procedure pro_while1(
in insertcount int
)
begin
declare i int default 1;
while i <= insertcount do
insert into admin(username, password) values(concat('rois',i), '666');
set i = i+1;
end while;
end& call pro_while1(5)&
select * from admin& #案例:批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止
create procedure pro_while2(
in insertcount int
)
begin
declare i int default 1;
a:while i <= insertcount do
insert into admin(username, password) values(concat('xiaohua',i), '777');
if i >= 20 then leave a;
end if;
set i = i+1;
end while a;
end& call pro_while2(22)&
select * from admin&
mysql-18-function的更多相关文章
- Mysql drop function xxxx ERROR 1305 (42000): FUNCTION (UDF) xxxx does not exist
mysql> drop function GetEmployeeInformationByID;ERROR 1305 (42000): FUNCTION (UDF) GetEmployeeInf ...
- mysql yyyy-MM-dd function UNIX_TIMESTAMP('yyyy-MM-dd HH:mm:ss')
mysql yyyy-MM-dd function UNIX_TIMESTAMP('yyyy-MM-dd HH:mm:ss') select UNIX_TIMESTAMP('1997-10-04 22 ...
- Adding New Functions to MySQL(User-Defined Function Interface UDF、Native Function)
catalog . How to Add New Functions to MySQL . Features of the User-Defined Function Interface . User ...
- mysql 定义function rand
MySQL获取随机数 如何通过MySQL在某个数据区间获取随机数? MySQL本身提供一个叫rand的函数,返回的v范围为0 <= v < 1.0. 介绍此函数的MySQL文档也介绍道 ...
- MYSQL this function has none of deterministic no sql ......错误
This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...
- mysql常用function
前言: 本文主要是参考mysql官方文档,并加上自己的测试用例,来加深自己对mysql函数的理解,也借此平台与大家分享,如有不妥和错误之处欢迎读者评论,我会及时改正,愿与大家一起学习进步. 概述: 所 ...
- MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法
MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DETER ...
- MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法 (转)
解决方法: 解决办法也有两种, 第一种是在创建子程序(存储过程.函数.触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个, 例如: CREATE DEFI ...
- mysql 自定义方法 function
在创建函数的时候,如果报如下错误 这个时候一定要先执行:set global log_bin_trust_function_creators=TRUE; 第二步骤: delimiter ;;CREAT ...
- sql:MySql create FUNCTION,VIEW,PROCEDURE
use geovindu; #函数 DELIMITER $$ drop function if exists f_GetDepartmentName $$ CREATE function f_GetD ...
随机推荐
- IntelliJ IDEA 2019 的安装与破解
IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具( ...
- Java面试题(RabbitMQ篇)
RabbitMQ 135. rabbitmq 的使用场景有哪些? ①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列.就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通 ...
- docker搭建zabbix收集windows计数器性能数据
1 docker服务的安装 1)在线安装docker服务 在线安装可以参考下面的安装步骤 a 安装相关依赖组件 yum install -y yum-utils device-mapper-persi ...
- Pytest-allure 生成美观好看的测试报告
在我们使用pytest-allure生成测试报告时,需要分为以下几步来执行 1.pytest TestCal.py --alluredir=/tmp/my_allure_results[这一步,是设置 ...
- xml selectnodes
[xML ]SelectNodes的用法 之前简单找个SelectNodes的例子看了看,写了读取XML文件节点的程序,但是节点数目有限制,后来仔细看看,是自己没完全弄清SelectNodes的用法, ...
- 100个高频Spring面试题
译 原文:https://www.javacodegeeks.com/2014/05/spring-interview-questions-and-answers.html A:Spring概览 ...
- JS中有趣的内置对象-JSON
前言 在以前的web开发中,我们多数选择纯文本或XML作为我们的提交的数据格式,大多数是XML,少数纯文本.其实从AJAX(Asynchronous JavaScript and XML)的命名我们也 ...
- 02_套接字编程(socket抽象层)
1.套接字概述 1.套接概述: 套接是进行网络通信的一种手段(socket) 2.套接字分类: 流式套接字(SOCK_STREAM): 传输层基于tcp协议进行通信 数 ...
- shell小技巧(1)计算一个文件中空行数量
方法1: grep -E "^$" 1.txt | wc -l 详解:在网上摘抄,个人觉得不使用-E参数也行,利用正则^$可帅选出空行 方法2: file="1.txt& ...
- Sunday算法解决字符串匹配问题
概述 提起字符串匹配可能更多人会想到KMP算法,该算法时间复杂度为O(m+n),而且也是我们在学习数据结构过程中最早接触到的比较好的算法.但KMP算法需要在模式字符串有关联的情况下,也即模式字符串前后 ...