利用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;
-
SET @u1 = 89893;
-
SET @u1 = userId;
3):我们还可以将查询语句的结果赋值给变量如下,使用同单个变量的赋值类似,只需将查询的查询sql括起来就好了;
-
SET
-
@t1 = (SELECT team_id FROM t_team_member WHERE user_id = @u1);
4):有了查询的单列赋值,我们再说下多列赋值,如果查询的返回值有多个列我们可以做如下的操纵,我们将查询出来的结果team_id和id分别赋值给t1和m1变量,
上面的单列赋值用SET,多列赋值使用的是一个SELECT…… INTO 。
-
SELECT team_id,id INTO
-
@t1,@m1
-
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;
-
if(@invisitAmount>@max_effective_amount) THEN
-
SET @invisitAmount= @max_effective_amount;
-
end if;
7):前面有说过一开始不确定入参和出参可以之后再编辑,编辑的参数的格式为: 【IN、OUT、INOUT】【参数名】 【参数的数据类型】,编写完成后就可以点击运行,
会弹出如下的输入参数框,如果入参有多个参数的话,可以按顺序用逗号分隔填入。
8):运行结果如下,允许有多个结果集,也就是多个SELECT 变量名 (多个变量中间用逗号分隔):
SELECT @u1,@newInvisit,@oldInvisit;
利用navicat写mysql的存储过程的更多相关文章
- 【mysql】利用Navicat for MySQL的使用
1. 查看sql语句 如果忘记了某个SQL语句怎么写,可以利用Navicat for MySQL的历史日志来查看 在Navicat for MySQL中,直接对数据库进行想要的操作,然后点击工具-&g ...
- 用 Navicat 写mysql的游标
千言万语也比不上一个简单直接明了的小例子: CREATE PROCEDURE pro_users() begin DECLARE myid int; DECLARE no int; ); ); ); ...
- 利用Navicat实现MySQL数据库结构对比和同步
在生产环境中,我们总会因为这样或那样的原因导致主从不同步,亦或者是测试环境要和生产环境进行同步,利用Navicat结构同步工具,不但能找出库结构差异,还可以针对create.modify.drop等进 ...
- navicat 给mysql 添加存储过程(函数)
BEGIN DECLARE i INT default 0; DECLARE num int default 0; DECLARE count1 int default 0; DECLARE coun ...
- mysql如何利用Navicat 导出和导入数据库
MySql是我们经常用到的数据,无论是开发人员用来练习,还是小型私服游戏服务器,或者是个人软件使用,都十分方便.对于做一些个人辅助软件, 选择mysql数据库是个明智的选择,有一个好的工具更是事半功倍 ...
- [转]mysql如何利用Navicat 导出和导入数据库
MySql是我们经常用到的数据,无论是开发人员用来练习,还是小型私服游戏服务器,或者是个人软件使用,都十分方便.对于做一些个人辅助软件,选择mysql数据库是个明智的选择,有一个好的工具更是事半功倍, ...
- MySql创建存储过程,并使用事件定时调用
一.使用命令行创建存储过程的步骤 :参数详情参考 https://www.mysqlzh.com/ 1.模板 delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ' ...
- 利用navicat创建存储过程、触发器和使用游标的简单实例
利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报 分类: 数 ...
- MySQL存储过程和自定义函数、Navicat for mysql、创建存储过程和函数、调用存储过程和函数的区别
1 MySQL存储过程和函数 过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快. 1.1 存储过程 存储 ...
随机推荐
- Log4j 2使用教程 分类: B1_JAVA 2014-07-01 12:26 314人阅读 评论(0) 收藏
转载自 Blog of 天外的星星: http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html Log4j 2的好处就不和大家说了,如果你搜了2,说明你 ...
- 关于python的二维数组
test =[ [1, 2, 3], [4, 5, 6], [7, 8, 9]] #这个就可以看做是二维数组了,直接创建print(test)print(test[:][1]) ...
- Python 极简教程(三)数据类型
每种语言都有各种数据类型.这就像在现实生活中,我们计数的时候需要用到数字,在表述金额.重量.距离等需要精确计数时用到小数,在日常交谈中要用文字,等等.在计算机语言中,为了表述不同的情况,也需要用到各种 ...
- CentOS 7 virt-manager 无法连接本地的hypervisor
OS : CentOS 7 Gnome Desktop 问题描写叙述: CentOS 7 下使用yum install virt-manager之后.使用virt-manager无法连接本地的hype ...
- docker 第一课 —— 从容器到 docker
1. 容器的概念 一种虚拟化的解决方案 与虚拟机所不同的是,虚拟机通过中间层,将一台或多台独立的机器虚拟运行于物理硬件之上: 而容器是直接运行于操作系统内核之上的用户空间: 基于上述,容器虚拟化也被称 ...
- C++ Tricks(一)—— 判断字符串 string 对象的所有字符都相等
S == string(S.size(), S[0]);
- Scala在挖财的应用实践--转载
原文地址:http://www.infoq.com/cn/articles/scala-architecture-wacai 编者按:本文是根据ArchSummit大会上挖财资深架构师王宏江的演讲&l ...
- Linux下的lds链接脚本简介(二)
七. SECTIONS命令 SECTIONS命令告诉ld如何把输入文件的sections映射到输出文件的各个section: 如何将输入section合为输出section; 如何把输出section ...
- 硬件——STM32 , SN74HC573锁存器
74HC573是一款高速CMOS器件: 上图中:输出使能为:OE 锁存使能为:LE 典型电路: 上图中:PWR-AL-0,PWR-AL-1,PWR-AL-2:是单片机输出的高低电平给573 对应的 ...
- REGEXP_LIKE,REGEXP_INSTR,REGEXP_SUBSTR,REGEXP_REPLACE
参考: http://www.cnblogs.com/scottckt/archive/2012/10/11/2719562.html http://www.jb51.net/article/3842 ...