愤怒的南瓜饼 发表于 2023-3-30 03:15:36

MySQL存储过程

基本构造

delimiter $$#定义终止符,可据习惯更换

CREATE PROCEDURE method_name()                #创建方法
BEGIN                #方法体开始
SELECT 'code';                #方法体,写SQL语句
END                #方法体终止

$$                #存储过程终止基本语法

1.定义终止符

delimiter $$        #$$为自定义符,可据习惯更换2.创建方法

CREATE PROCEDURE method()3.方法体开始

BEGIN4.方法体终止

END5.调用方法

CALL method_name();6.格式化方法

drop PROCEDURE method_name();7.变量及赋值

1.局部变量

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

[*]声明变量
declare var_name type ;例:
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
       
        {ELSE statement_list}
END IF2.CASE

CASE case_value
        WHEN when_value THEN statement_list
       
        ...
       
END CASECASE
        WHEN search_condition THEN statement_list
       
        ...
       
END CASE10.循环

1.LOOP

LOOP
        statement_list

        IF exit_condition THEN
                LEAVE label;
        END IF;
END LOOP label;2.REPEAT

类似 JAVA 中的 do-while
REPEAT
        statement_list
UNTIL search_condition        #直到...为止
END REPEAT;3.WHILE

WHILE search_condition DO
        statement_list
END WHILE;11.循环跳出、继续

1.LEAVE

跳出循环,类似 JAVA 中的 break
LEAVE label2.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
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: MySQL存储过程