第二十八日-MYSQL预存程序 STORED PROCEDURE:来写一个BMI小程序(1)

我们在处理资料时,很常遇到一个情况:每天要捞差不多的东西!
每天要下的指令其实大同小异,只是输入日期不同,
像这种重复性很高的事情,
通常会写一支预存程序处理,
除了可以节省我们语法贴来贴去的时间,还能加快一点处理速度

建立预存程序的时候,MYSQL会先把我们下的语法编译一次,
之後每次呼叫预存程序,MYSQL都不用再编译,
就像是我们看外文书,
我们第一次看的时候,好好做中文笔记(编译),之後再看就可以对照笔记,
不用每次看时都要重新用GOOGLE翻译。

写预存程序会提到下面几个概念:

  • 分隔符号 DELIMITER
  • STORED PROCEDURE建立语法
  • 参数
  • 变数
  • 流程控制

我们一步步认识这些概念,写出输入身高和体重後,可以计算出BMI的小程序。

分隔符号 DELIMITER

我们之前有提到「;」对MYSQL而言,相当於逗号,
也就是MYSQL看到「;」,便会认为「这个句子结束了」,
然而,有时後我们可能需要一个段落一起执行,
而不是单句、单句分别执行。

例如我们如果写一个小段落:
「今天天气很好,很适合出去玩;但正要出门的时候就下雨了,所以待在家看电视;」
MYSQL可能读取到 「今天天气很好,很适合出去玩;」 便以为语法结束了,
於是理解成今天适合出去玩,
但事实上我们的结论是「下雨了,待在家看电视」。

防止这种状况的方法便是使用分隔符号 DELIMITER。
MYSQL会在读取到DELIMITER时,才结束读取语法。
DELIMITER使用方法是

  1. DELIMITER
  2. 空格
  3. 符号(可以自己决定要用什麽,我是用$$)
DELIMITER $$

像这样设定之後,我们可以把文章改成
「今天天气很好,很适合出去玩;但正要出门的时候就下雨了,所以待在家看电视$$」
MYSQL就会把整段读取完。

STORED PROCEDURE建立语法

STORED PROCEDURE预存程序通常会是一整段语法,
我们会先设定分隔符号,确保预存程序整段被执行。

DELIMITER $$

接下来加上建立预存程序的语法,预存程序语法会CREATE PROCEDURE开始,
帮预存程序命名後,会填入参数,以及参数的型别,
再用BEGIN和END把中间的语法包起来,
最後输入刚刚设定的分隔符号,
告诉MYSQL要从第一行执行到分隔符号这里。

DELIMITER $$
CREATE PROCEDURE [SP名称] ([参数名称1] [型别1],[参数名称2] [型别2])

BEGIN
[程序逻辑放这里]
END
$$

明天再解释参数是什麽,程序逻辑部分可以先想想,
之前介绍的IF写法要怎麽写,试着先用中文出来,
例如:
BMI=体重/(身高乘身高)
IF BMI小於18 显示过轻

写出来後再翻成语法看看,明天介绍罗!


<<:  [知识篇]WebRTC - ICE(STUN/TURN)

>>:  Day27 语法改革!零基础新手也能读懂的JS - JS30-01 Drum Kit

[Day 3] Course 1_Foundation - Data Analytics 介绍

《30天带你上完 Google Data Analytics Certificate 课程》系列将...

【Day 06 】- Module 隐藏大法,不可能再被发现了吧 / _ \(基於 VAD 断链的隐藏方法)

Agenda 资安宣言 测试环境与工具 学习目标 技术原理与程序码 References 下期预告 ...

Day 19 - 相等判断与型别转换

前言 昨天我们介绍了 undefined、null、NaN,也带到了如何将这些特别的值判断出来。 今...

[资料库] 学习笔记 - 商城交易之上架商品

这次练习的题目是做出商城中上架商品的功能 功能主要需求:谁上架了什麽商品、上架数量多少,如果商品没有...

认识HTML(六):表格与表单

基本的表格构成 在HTML中的表格结构是以列及栏位定义出来的。 表格会用到以下三个元素:table、...