编程,就是一种“逻辑代码”,具有如下3个特点:1,变量的使用;2,流程控制结构的使用;3,函数的使用; 语句块包含符begin。。。。end它相当于js或php中的“大括号”使用场合。不过,mysql,它更灵活一些:
该结构可以设定“标识符”,该标识符用于“代表”该语句块结构。则内部可以使用该标识符,以“退出”该语句块结构,比如:AAA: begin.......if ( ... ) thenbeginleave AAA; //这里就是退出该AAA语句块。end;end if; end AAA ;
流程控制if分支结构
case分支结构有两种形式:
示意性代码1(形式1):set @v1 = 1; #定义变量并赋值case @v1when 1 thenbegin分支1.。。。,可以做具体的各种计算,以及增删改查。。。set @v2 = @v1*3 + 4;//计算insert into .....;update .....;delete .....;select ......end;when 2 thenbegin分支2.。。。end;......elsebegin分支else.。。。end; end case; 示意性代码2(形式2):set @v1 = 5;casewhen @v1 < 3 thenbegin......end;when @v1 >= 3 and @v1 <= 5 thenbegin......end;......end case;
BBB : loopbegin这里才是循环体的语句,中间可以通过BBB标识符来退出该循环;end;end loop BBB; while循环结构while (条件判断) dobegin。。。。循环体语句end;end while;while语句:先判断,成立后进入循环; repeat循环结构repeatbegin。。。。语句块。。。end;until 判断条件;end repeat; repeat循环结构:第一次会无条件进入循环体中。其后,循环条件满足就又进入。 变量分两种变量:常规变量:变量名直接写,但必须:先声明,后使用;声明:declare 变量名 变量类型 【default 初始值】;使用:赋值:set 变量名 = 值;然后,在任何需要数据的场合都可以用它;限制:常规变量,只能在“定义函数”“定义存储过程”,“定义触发器”的3种情形下使用。会话变量:变量名前面必须带“@”符号,可以直接赋值,并使用——跟php很像。可以在任何场合使用;存储函数存储函数就是函数!——只是规定:其必须返回一个数据值;我们系统内部也有一些函数,比如:md5(), now(), version(), mid() .....所有函数,都有一个返回值;我们使用的时候,就要把该函数的调用当做一个值来看待并使用。则:我们自己定义的函数,也可以同样使用。
定义形式:
函数中语句,可以有:变量定义和使用;流程控制语句;数据表的增删改操作; #不可以进行查询操作(select, show, desc) 举例:
存储过程还是函数!——只是规定:存储函数不能返回数据值;定义形式:
补充说明:1,该存储过程中,不能使用return语句返回数据;2,而存储过程中,其中的select会返回结果集,只是作为“数据查询结果”(表的形式),而不是作为“存储过程”执行后得到的“单个数据”。3,其中,形参前面可以带:in, 或out, 或inout修饰符,其含义分别为:in:表示该形参是接收实参传过来的数据,也就是最常见的情形,默认不写就是它;out:表示该形参是用于将函数内部的数据传出给对应的实参,此时实参必须是变量inout:具有上述2个功能。此时,其对应实参也必须是变量。 存储过程调用形式:call 存储过程名(实参1,实参2,....) 在php中,也可以调用它,类似这样: 举例:
演示2:使用in,out,inout的形参:
再来验证@m2, @m3的值: