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 ...
随机推荐
- 焦大:seo思维光年(中)seo体系化
http://www.wocaoseo.com/thread-56-1-1.html 光年的seo培训一直被业界公认为高端的培训,其主导的seo数据化一直对现在很多人的影响至深,比如我自己.但是也有人 ...
- 集成学习小结(RF、adaboost、xgboost)
目录 回顾监督学习的一些要素 集成学习(学什么) bagging boosting 梯度提升(怎么学) GBDT Xgboost 几种模型比较 Xgboost 与 GBDT xgboost 和 LR ...
- AD18 PCB中添加中文字符串显示乱码问题解决
该问题是由于字符串的自体类型设置问题,AD默认是[stroke],我们点击[TrueType]即可正常显示.PS:AD18搞啥呢,默认显示输入内容不行吗,找半天!!!
- Application.LoadLevel
Unity在场景切换之间清理下内存 http://www.cnblogs.com/dongz888/p/4920714.html
- js map对象处理if
onButtonClick只有一个参数时候,map和object对象都可以 // onButtonClick1(3) onButtonClick只有一个参数时候,map和object对象都可以 con ...
- Python中自己不熟悉的知识点记录
重点笔记: Python 它是动态语言 动态语言的定义:动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用.它是一类 在 运行时可以改变其结构的语言 : ...
- Python远程连接Redis
import redisr=redis.Redis(host='192.168.56.102',port=6379,db=0,password='jinxfredis' )r.set('name',' ...
- 第23课 - #error 和 #line 使用分析
第23课 - #error 和 #line 使用分析 1. #error 的用法 (1)#error 是一个预处理器指示字,用于生成一个编译错误消息,这个消息最终会传递到编译器(gcc) 在思考这一点 ...
- 第18课 - make 中的路径搜索(下)
第18课 - make 中的路径搜索(下) 1. 问题一 当 VPATH 和 vpath 同时出现,make 会如何处理? 工程项目的目录结构如下图所示,src1 和 src2 中都包含了 func. ...
- [LeetCode]196. 删除重复的电子邮箱(delete)
题目 编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个. +----+------------------+ | Id | Email | ...