mysql的学习(七)-自定义函数和流程控制

wpbing 2018-06-22 原文

mysql的学习(七)-自定义函数和流程控制

DELIMITER //     (设置结束符  其实我也不太明白为啥要这样  记住就行把)
CREATE FUNCTION ym_date(mydate DATE)  (创建函数  函数名字(参数))
RETURNS VARCHAR(20)            (指定函数的返回类型)
BEGIN                (函数开始,如果函数只有一句可以省略bigin和end)
RETURN DATE_FORMAT(mydate,%Y-%m);        (函数体)
END//                    (函数结束)
DELIMITER ;                (把结束符再变成;)

CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
RETURN (SELECT CONCAT_WS('-----',book_name,store) FROM bookinfo WHERE book_id=bid);

(into的介绍)
DELIMITER //
CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE result VARCHAR(20) (声明变量)
SELECT CONCAT_WS('-----',book_name,store) INTO result FROM bookinfo WHERE book_id=bid;(对变量result进行赋值。emmm没啥说的)
RETURN result;
END//
DELIMITER ;

(删除函数)
DROP FUNCTION xxxxx;



(又是if else)
DELIMITER //
CREATE FUNCTION show_level(cid VARCHAR(20))
RETURNS VARCHAR(10)
BEGIN
DECLARE lev VARCHAR(20);
DECLARE money DECIMAL(7,3);
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
IF money>=500 THEN
    SET lev='高级';
ELSEIF money>=300 THEN
    SET lev='普通';
ELSE 
    SET lev='非会员';
END IF;
RETURN lev;
END//
DELIMITER ;

(case的样例)
DELIMITER //
CREATE FUNCTION show_lev2(cid CHAR(18))
RETURNS barchar(10)
BEGIN
DECLARE lev VARCHAR(10);
DECLARE money DECIMAL(7,3);
DECLARE num INT;
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
SET num=TRUNCATE(money/100,0);
CASE num
WHEN 0 THEN SET lev='非会员';
WHEN 1 THEN SET lev='普通';
WHEN 2 THEN SET lev='高级';
ELSE SET lev='金牌';
END CASE;
RETURN lev;
END//
DELIMITER ;
(CASE 也可以这样用)
CASE
WHEN money>500 THEN SET lev='高级';
WHEN money>=300 THEN SET lev='普通';
ELSE SET lev='不是';
END CASE;


(以下是循环的样例)
DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN 
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
WHILE num<n DO
    SET num= num + 1;
    SET SUM=SUM + num;
END WHILE;
RETURN SUM;
END//
DELIMITER ;



DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN 
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
labl:LOOP
    SET num=num+1;
    SET SUM=SUM+num;
    IF num>=n THEN
    LEAVE labl;
    END IF;
END LOOP labl;
RETURN SUM;
END//
DELIMITER ;


DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN 
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
REPEAT
SET num=num+1;
SET SUM=SUM+num;
UNTIL num>=n
END REPEAT;
RETURN SUM;
END//
DELIMITER ;

DELIMITER // (设置结束符 其实我也不太明白为啥要这样 记住就行把)
CREATE FUNCTION ym_date(mydate DATE) (创建函数 函数名字(参数))
RETURNS VARCHAR(20) (指定函数的返回类型)
BEGIN (函数开始,如果函数只有一句可以省略bigin和end)
RETURN DATE_FORMAT(mydate,%Y-%m); (函数体)
END// (函数结束)
DELIMITER ; (把结束符再变成;)

CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
RETURN (SELECT CONCAT_WS(‘—–‘,book_name,store) FROM bookinfo WHERE book_id=bid);

(into的介绍)
DELIMITER //
CREATE FUNCTION show_name_store(bid INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE result VARCHAR(20) (声明变量)
SELECT CONCAT_WS(‘—–‘,book_name,store) INTO result FROM bookinfo WHERE book_id=bid;(对变量result进行赋值。emmm没啥说的)
RETURN result;
END//
DELIMITER ;

(删除函数)
DROP FUNCTION xxxxx;

 

(又是if else)
DELIMITER //
CREATE FUNCTION show_level(cid VARCHAR(20))
RETURNS VARCHAR(10)
BEGIN
DECLARE lev VARCHAR(20);
DECLARE money DECIMAL(7,3);
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
IF money>=500 THEN
SET lev=’高级’;
ELSEIF money>=300 THEN
SET lev=’普通’;
ELSE
SET lev=’非会员’;
END IF;
RETURN lev;
END//
DELIMITER ;

(case的样例)
DELIMITER //
CREATE FUNCTION show_lev2(cid CHAR(18))
RETURNS barchar(10)
BEGIN
DECLARE lev VARCHAR(10);
DECLARE money DECIMAL(7,3);
DECLARE num INT;
SELECT balance INTO money FROM readerinfo WHERE card_id=cid;
SET num=TRUNCATE(money/100,0);
CASE num
WHEN 0 THEN SET lev=’非会员’;
WHEN 1 THEN SET lev=’普通’;
WHEN 2 THEN SET lev=’高级’;
ELSE SET lev=’金牌’;
END CASE;
RETURN lev;
END//
DELIMITER ;
(CASE 也可以这样用)
CASE
WHEN money>500 THEN SET lev=’高级’;
WHEN money>=300 THEN SET lev=’普通’;
ELSE SET lev=’不是’;
END CASE;

(以下是循环的样例)
DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
WHILE num<n DO
SET num= num + 1;
SET SUM=SUM + num;
END WHILE;
RETURN SUM;
END//
DELIMITER ;

 

DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
labl:LOOP
SET num=num+1;
SET SUM=SUM+num;
IF num>=n THEN
LEAVE labl;
END IF;
END LOOP labl;
RETURN SUM;
END//
DELIMITER ;

DELIMITER //
CREATE FUNCTION test(n INT)
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 0;
DECLARE SUM INT DEFAULT 0;
REPEAT
SET num=num+1;
SET SUM=SUM+num;
UNTIL num>=n
END REPEAT;
RETURN SUM;
END//
DELIMITER ;

 

posted on 2018-06-22 21:46 两千个秘密 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为wpbing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wpbing/p/9215588.html

mysql的学习(七)-自定义函数和流程控制的更多相关文章

  1. Mysql Insert buffer

    Mysql Insert buffer   在InnoDB中,主键是行的唯一标识符,因此插入聚集索引(prim […]...

  2. 数据库mysql的学习(2)

    数据库mysql的学习(2) 数据类型:数据列,存储过程参数,表达式和局部变量的数据特征。   整形: tin […]...

  3. MySQL学习——操作数据库(增删改查)(一)

    数据库是长期存储在计算机内,有组织的和可共享的数据集合,简而言之,数据库就是一个存储数据的地方,只是在其存储方 […]...

  4. MySQL表的操作02

    【1】设置非空约束(NOT NULL ,NK)--->>>目的是f防止某些字段中的内容为空 […]...

  5. MySQL基础1

    数据库定义(DB: DataBase):   依照某种数据模型进行组织,并存放到计算机存储设备中的集合。 主流 […]...

  6. MySql学习 (一) —— 基本数据库操作语句、三大列类型

    注:该MySql系列博客仅为个人学习笔记。   在使用MySql的时候,基本都是用图形化工具,如navicat […]...

  7. 数据库mysql的学习(三)

    数据库mysql的学习(三) 删除数据库表 drop table [if exists] 表一,表二̷ […]...

  8. MySql学习

    Mysql JavaEE:企业级Java开发 Web 前端(页面:展示,数据!) 后台 (连接点:连接数据库J […]...

随机推荐

  1. 了解它的内部调度机制TaskScheduler(文章来源于一线码农) 用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler

      平时我们在用多线程开发的时候少不了Task,确实task给我们带来了巨大的编程效率,在Task底层有一个T […]...

  2. H5+混合移动app应用开发——坑我太甚

    用了MUI之后,才发现,那坑比我想象之中的要多得多,有些是H5的坑,有些是plus的坑,接下来我一一来吐槽一番 […]...

  3. 基于python的Selenium使用小结

      之前介绍过基于Unittest和TestNG自动化测试框架,然而基于Web端的测试的基础框架是需要Sele […]...

  4. 女朋友看了也懂的Kafka(下篇)

    前言: 在上篇中我们了解了Kafka是什么,为什么需要Kafka,以及Kafka的基本架构和各自的作用是什么, […]...

  5. 在VC2015中调试FFMPEG

    编译X264需要至少 VS2013 update 2 以上版本. 本文使用 VS2015. 示例工程:http […]...

  6. 《进击吧!Blazor!》系列入门教程 第一章 8.部署

    《进击吧!Blazor!》是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Bl […]...

  7. 一、javaSE (十)形参和返回值、包、导包、权限修饰符、常见修饰符、内部类

    1:形式参数和返回值的问题          (1)形式参数;                    类名:需 […]...

  8. 前端模块化开发

    目录 CommonJS规范 ES6模块化规范 ES6模块化写法2 CommonJS规范 CommonJS使用 […]...

展开目录

目录导航