提示:一个混合语句由一个BEGIN-END块构成,这个块其的作用就是闭合一个或多个存储程序指令 |
提示:在块中语句的顺序必须是变量(Variables)和条件,接下来是游标(Cursors),然后是异常处理(Exception handlers),而最后是其他语句(Other)。我们可以使用下面的藏头诗来助记:“Very Carefully Establish Order”(千万小心创建顺序)。 |
提示:请避免在内部块中覆盖定义外部块中已存在的变量 |
提示:不要假设测试表达式的结果不是TRUE就是FALSE。它在表达式中的任何一个变量为NULL时也可以返回NULL(UNKNONN)。 |
三值逻辑 布尔表达式可以返回三个可能的结果,当布尔表达式中的值都是已知时,结果可能是TRUE或FALSE。举例来说,如同下面的表达式无疑会返回真或假 (2 < 3) AND (5 < 10) 有时,你可能并不知晓所有表达式的值,这是因为数据库允许值为NULL或者被遗漏。那么随后会发生什么,从表达式返回的结果可以包含NULL吗?请看例子: 2 < NULL 因为你不知道遗漏的值是哪一个,你所能给的唯一答案就是“我不知道。”这就是最为基本的,所谓的“三值逻辑”,所以你所能得到的可能答案不仅是TRUE和FALSE,还有NULL。 关于三值逻辑的深层次知识,我们推荐C.J.Date的书《Database In Depth》(O'Reilly)为从业者准备的关系理论书籍 |
提示:对于一个非凡的IF语句而言,使用缩排和格式化来确保你的IF语句的逻辑更容易理解 |
提示:如果没有任何一个CASE语句与输入的条件相匹配,CASE将会生成一个MySQL 1339错误。你可以为其创建一个错误处理单元来忽略错误,或者在CASE语句中使用ELSE子句确保异常永远不再发生 |
欢迎光临 MariaDB社区 (http://123.56.88.72/) | Powered by Discuz! X3.2 |