• 利用navicat写mysql的存储过程


    最近项目经理让我给新的活动的预留一个插入红包和查看详情的sql,方便在项目出问题的做一些紧急操作,我想了下这里面还涉及到挺多逻辑和挺多表的一句句查也不方便啊,干脆写到存储过程里,于是开始在navicat写存储过程,因为是第一次写,在此记录一下,方便下次查看 (•̀ᴗ•́)و ̑̑

    1:选择新建函数。

    2:新建函数后会出现下面的界面,要是你不确定存储过程的输入输出值,可以直接点击完成,在里面的编辑的时候再加上这些参数,若是已经确定参数可以点击下一步填写相关参数。


    3:如果上一步点击的是下一步的话,就会出现下面的界面,各个参数的含义在界面右面的描述中有,其实用惯的也能猜出来,模式的命名也是见名知意的。

    IN:存储过程运行时需要输入的参数,也就是入参。

    OUT:储存过程运行后的返回值,也就是出参。

    INOUT:既是入参也是出参。


    4:填完后点确认就会有下面的界面,navicat会给我们初识化好基本格式,如下:


    5:现在我们就可以在begin和end直接编辑我们的语句,下面介绍存储过程中常用的操作。

    1):定义一个变量如下,使用 DECLARE修饰变量,后面跟变量名,变量的数据类型和大小;

    DECLARE u1  bigint(20);
    

    2):有了变量,我们就可以开始做赋值操作,先来个简单的单个变量的赋值,如下直接使用SET变量名前使用@修饰,可以直接赋值也可以将入参赋值给变量,如下,将入参userId赋值给变量u1;

    1. SET @u1 = 89893;
    2. SET @u1 = userId;

    3):我们还可以将查询语句的结果赋值给变量如下,使用同单个变量的赋值类似,只需将查询的查询sql括起来就好了;

    1. SET
    2. @t1 = (SELECT team_id FROM t_team_member WHERE user_id = @u1);

    4):有了查询的单列赋值,我们再说下多列赋值,如果查询的返回值有多个列我们可以做如下的操纵,我们将查询出来的结果team_id和id分别赋值给t1和m1变量,

    上面的单列赋值用SET,多列赋值使用的是一个SELECT…… INTO 。

    1. SELECT team_id,id INTO
    2. @t1,@m1
    3. FROM t_team_member WHERE user_id = @u1;
    5):说完了各种变量的赋值操作,我们还需要将结果返回,返回结果集的操作如下:SELECT @变量名  ( 变量名间用逗号分隔);

    SELECT @max_effective_amount,@teamInvisitAmount

    6):逻辑判断时,在存储过程中也能使用IF…… ELSE 格式为: IF(判断的条件) THEN 满足if条件做的操作 ELSE 不满足if条件做的操作 END IF;

    1. if(@invisitAmount>@max_effective_amount) THEN
    2. SET @invisitAmount= @max_effective_amount;
    3. end if;

    7):前面有说过一开始不确定入参和出参可以之后再编辑,编辑的参数的格式为: 【IN、OUT、INOUT】【参数名】 【参数的数据类型】,编写完成后就可以点击运行,

    会弹出如下的输入参数框,如果入参有多个参数的话,可以按顺序用逗号分隔填入。



    8):运行结果如下,允许有多个结果集,也就是多个SELECT 变量名 (多个变量中间用逗号分隔):

    SELECT @u1,@newInvisit,@oldInvisit;









  • 相关阅读:
    java处理高并发高负载类网站的优化方法
    谈谈Memcached与Redis
    php中const与define的使用区别 详解
    ecshop添加模板与库文件
    ECShop 2.5.1 的结构图及各文件相应功能介绍
    Uva10972(RevolC FaeLoN)
    交叉染色法判断二分图
    边双联通问题求解(构造边双连通图)POJ3352(Road Construction)
    POI1999(仓库管理员)
    ZOJ1311(Network)
  • 原文地址:https://www.cnblogs.com/jpfss/p/9759122.html
Copyright © 2020-2023  润新知