百木园-与人分享,
就是让自己快乐。

MySQL存储过程

基本构造

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 )
    BEGIN
    		SELECT
    			parameter2 INTO @parameter2 
    		FROM
    			table_name 
    		WHERE
    			parameter1 = 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_value
	WHEN when_value THEN statement_list
	[WHEN when_value THEN statement_list]
	...
	[ELSE statement_list]
END CASE
CASE
	WHEN search_condition THEN statement_list
	[WHEN search_condition THEN statement_list]
	...
	[ELSE statement_list]
END CASE

10.循环

1.LOOP

[label: ]LOOP
	statement_list

	IF exit_condition THEN
		LEAVE label; 
	END IF; 
END LOOP label;

2.REPEAT

类似 JAVA 中的 do-while

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

3.WHILE

[label: ]WHILE search_condition DO
	statement_list
END 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 为单位


来源:https://www.cnblogs.com/V-Notes/p/17271130.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » MySQL存储过程

相关推荐

  • 暂无文章