navicat mysql 存储过程

时间:2023-03-10 01:58:47
navicat mysql 存储过程

存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。

一、基本数据类型:

二、变量:

自定义变量:DECLARE   a INT ; SET a=100;

可用以下语句代替:DECLARE a INT DEFAULT 100;

变量分为用户变量和系统变量,系统变量又分为会话和全局级变量

用户变量:用户变量名一般以@开头,滥用用户变量会导致程序难以理解及管理

三、运算符:
1.算术运算符
+     加   SET var1=2+2;       4
-     减   SET var2=3-2;       1
*      乘   SET var3=3*2;       6
/     除   SET var4=10/3;      3.3333
DIV   整除 SET var5=10 DIV 3; 3
%     取模 SET var6=10%3 ;     1

2.比较运算符
>            大于 1>2 False
<            小于 2<1 False
<=           小于等于 2<=2 True
>=           大于等于 3>=2 True
BETWEEN      在两值之间 5 BETWEEN 1 AND 10 True
NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
IN           在集合中 5 IN (1,2,3,4) False
NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
=             等于 2=3 False
<>, !=       不等于 2<>3 False
<=>          严格比较两个NULL值是否相等 NULL<=>NULL True
LIKE          简单模式匹配 "Guy Harrison" LIKE "Guy%" True
REGEXP       正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
IS NULL      为空 0 IS NULL False
IS NOT NULL 不为空 0 IS NOT NULL True

3.逻辑运算符

4.位运算符
|   或
&   与
<< 左移位
>> 右移位
~   非(单目运算,按位取反)

注释:

mysql存储过程可使用两种风格的注释
双横杠:--

该风格一般用于单行注释
c风格:/* 注释内容 */ 一般用于多行注释

--------------------流程控制--------------------

  1. 区块定义,常用
    begin
    ......
    end;
    也可以给区块起别名,如:
    lable:begin
    ...........
    end lable;
    可以用leave lable;跳出区块,执行区块以后的代码

2.条件语句

if 条件 then

statement

else

statement

end if;

3.循环语句

(1).while循环

[label:] WHILE expression DO

statements

END WHILE [label] ;

(2).loop循环

[label:] LOOP

statements

END LOOP [label];

(3).repeat until循环

[label:] REPEAT

statements

UNTIL expression

END REPEAT [label] ;

四、navicat 创建存储过程简单例子

1、创建存储过程

navicat mysql 存储过程

然后选择“过程”。

navicat mysql 存储过程

这里的参数设置可以先不管,能在后续根据需要添加。

但还是说明一下,模式分为三种:

1、IN:输入参数

2、OUT:输出参数

3、INOUT:既作为输入参数,也作为输出参数

需要注意,如果我们的存储过程需要外部传入参数进行运算,以及需要返回部分参数,是需要定义好的。

navicat mysql 存储过程

上面的就是什么参数都没有设置的初始情况。

navicat mysql 存储过程

那么如果这时候我们保存一下。

navicat mysql 存储过程

接着,我们需要做一些准备措施,先建一个表t_test,有两个字段cell_0、cell_1。

navicat mysql 存储过程

数据请自己插入,没有硬性要求。

还有另外一个表,仅仅名字不一样了而已

navicat mysql 存储过程

这时候,需要我们t_test这个表内必须有数据,而tt_test则是空的,请检查一下。

navicat mysql 存储过程