基本构造

delimiter $$  #定义终止符,可据习惯更换CREATE PROCEDURE method_name()#创建方法BEGIN#方法体开始SELECT 'code';#方法体,写SQL语句END#方法体终止$$#存储过程终止

基本语法1.定义终止符

delimiter $$#$$为自定义符,可据习惯更换

2.创建方法

CREATE PROCEDURE method()

3.方法体开始

BEGIN

4.方法体终止

END

5.调用方法

CALL method_name();

6.格式化方法

drop PROCEDURE method_name();

7.变量及赋值1.局部变量

用户自定义,在当前 begin-end 块中有效

  • 声明变量

    declare var_name type [default var_value];

    例:

    declare nickname varchar(32);

2.用户变量

用户自定义,在当前会话(连接)中有效,类似JAVA中的全局变量

  • 不需提前声明,使用即声明

    @var_name

    例:

    set @var_name = 'var_name';

3.变量赋值

  • set 赋值

    set

    例:

    set var_name = 'var_name';
  • into 赋值

    可在其他 sql 语句中临时赋值,且可以同时给多个临时变量

    into

    例:

    select var_name1 into @var_name2 from tables_name

8.入参出参

  • 入参

    in param_name type
  • 出参

    类似 JAVA 中返回值

    out param_name type

    例:

    delimiter $$CREATE PROCEDURE method (IN parameter1 VARCHAR ( 32 ),OUT parameter2 VARCHAR ( 32 )BEGINSELECTparameter2 INTO @parameter2 FROMtable_name WHEREparameter1 = parameter1;END $$CALL method ( '参数1', @parameter2 ) $$SELECT @parameter2 $$
  • inout 即可入参也可出参

    inout param_name type

9.判断1.IF

IF search_condition THEN statement_list[ELSEIF search_condition THEN statement_list]{ELSE statement_list}END IF

2.CASE

CASE case_valueWHEN when_value THEN statement_list[WHEN when_value THEN statement_list]...[ELSE statement_list]END CASE
CASEWHEN search_condition THEN statement_list[WHEN search_condition THEN statement_list]...[ELSE statement_list]END CASE

10.循环1.LOOP

[label: ]LOOPstatement_listIF exit_condition THENLEAVE label; END IF; END LOOP label;

2.REPEAT

类似 JAVA 中的 do-while

[label: ]REPEATstatement_listUNTIL search_condition#直到...为止END REPEAT;

3.WHILE

[label: ]WHILE search_condition DOstatement_listEND WHILE;

11.循环跳出、继续1.LEAVE

跳出循环,类似 JAVA 中的 break

LEAVE label

2.ITERATE

继续本次循环

ITERATE label

常用函数1.字符串拼接

CONCAT(str1,str2,...)

2.取时间差

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

取 datetime_expr1 – datetime_expr1 的差值,unit 为单位