当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql存储过程:定义变量,赋值,判断,输出

mysql存储过程:定义变量,赋值,判断,输出

2018年03月18日  | 移动技术网IT编程  | 我要评论
1.定义变量,赋值,判断,输出 DROP PROCEDURE IF EXISTS proc_first; -- 如果proc_first存在就删除 create proce

1.定义变量,赋值,判断,输出

DROP PROCEDURE IF EXISTS proc_first; -- 如果proc_first存在就删除
create procedure proc_first()-- 创建存储过程
begin
    -- 定义变量
    DECLARE age INT;
    -- 赋值
    set age = 23;

    select age;
end;

-- 执行
call proc_first;

这里写图片描述

1.定义变量,赋值,判断,循环,输出

begin 

    -- 定义变量
    DECLARE modeId INT;
    DECLARE depotCode VARCHAR(20);
    DECLARE factoryId BIGINT;
    DECLARE count INT;
    -- 遍历数据结束标志
    DECLARE Adone INT DEFAULT FALSE;


    -- 查询数据查代发商下的仓库模式对应的仓库数量
    DECLARE  cursor_factory_modelid_depot CURSOR FOR  select d.factoryId,d.modeId,d.depotCode,count(*) as count from scm_factory_depot d GROUP BY d.factoryId,d.modeId; 
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET Adone = TRUE;
    -- 打开游标
    OPEN cursor_factory_modelid_depot;  



    read_loop: LOOP
    -- 取值 取多个字段
        FETCH cursor_factory_modelid_depot INTO factoryId,modeId,depotCode,count;
        IF Adone THEN
                LEAVE read_loop;
        END IF;

        -- 如果仓库数量等于1,就把仓库编码同步到UPC表
        -- if count=1 THEN
            -- update scm_factory_upc u1 set u1.depotCode=depotCode where u1.factoryId=factoryId and u1.modeId=modeId;
            -- select '执行update语句'; 
        -- end if;

        -- 如果仓库数量大于1,就需要在UPC表新增三条对应的数据,仓库编码不一样
        if count>1 THEN 
            -- 查询数据查代发商下的仓库模式对应的仓库明细
          -- select d2.factoryId,d2.modeId,d2.depotCode from scm_factory_depot d2 where d2.factoryId=factoryId and d2.modeId=modeId;
            -- 163  5   testdpot
            -- 163  5   0001

            begin
                DECLARE MfactoryId BIGINT;
                DECLARE MmodeId INT;
                DECLARE MdepotCode VARCHAR(20);
                DECLARE Bdone INT DEFAULT FALSE;
                DECLARE flag INT;

                -- cursor_factory_upc
                DECLARE cursor_factory_upc CURSOR FOR  select d2.factoryId,d2.modeId,d2.depotCode from scm_factory_depot d2 where d2.factoryId=factoryId and d2.modeId=modeId; 
                -- 将结束标志绑定到游标
                DECLARE CONTINUE HANDLER FOR NOT FOUND SET Bdone = TRUE;
                -- 打开游标
                OPEN cursor_factory_upc;  
                set flag=1;
                read_upc_loop: LOOP
                        FETCH cursor_factory_upc INTO MfactoryId,MmodeId,MdepotCode;
                        IF Bdone THEN
                                LEAVE read_upc_loop;
                        END IF;
                        -- SELECT MfactoryId,MmodeId,MdepotCode;
                        -- 查询出每个仓库的数据
                        -- select * from scm_factory_upc c1 where c1.factoryId=MfactoryId and c1.modeId=MmodeId;
                        -- update scm_factory_upc u3 set u3.depotCode=MdepotCode where u3.factoryId=MfactoryId and u3.modeId=MmodeId;
                        if flag=1 THEN
                            SELECT '第一个仓库的数据设置了仓库编码',MdepotCode;
                            -- update scm_factory_upc u3 set u3.depotCode=MdepotCode where u3.factoryId=MfactoryId and u3.modeId=MmodeId;
                        END if;

                        if flag>1 THEN 
                            select '插入了数据,仓库是',MdepotCode;
                        end if;

                        set flag = flag+1;
                END LOOP;
                CLOSE cursor_factory_upc;  
            end;
        end if;

  END LOOP;
  CLOSE cursor_factory_modelid_depot;  
end

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

  • Ubuntu上Vim安装NERDTree插件的详细操作步骤

    Ubuntu上Vim安装NERDTree插件的详细操作步骤

    nerdtree是vim的文件系统浏览器,使用此插件,用户可以直观地浏览复杂的目录层次结构,快速打开文件以进行读取或编辑,以及执行基本的文件系统操作。nerdt... [阅读全文]
  • MySQL 4种常用的主从复制架构

    MySQL 4种常用的主从复制架构

    一主多从复制架构在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量的对实时性要求不是特别高的读请求通过负载均衡分部到多个从库上(... [阅读全文]
  • 浅析MySQL 备份与恢复

    1、简介数据无价,mysql作为一个数据库系统,其备份自然也是非常重要且有必要去做。备份的理由千千万,预防故障,安全需求,回滚,审计,删了又改的需求等等,备份的... [阅读全文]
  • 保障MySQL数据安全的一些建议

    数据是企业核心资产,数据对企业而言是最重要的工作之一。稍有不慎,极有可能发生数据无意泄露,甚至被黑客恶意窃取的风险。每年业界都会传出几起大事件,某知名或不知名的... [阅读全文]
  • MySQL如何快速修改表的表结构

    快速修改mysql某张表的表结构--摘录自《mysql管理之道》alter table 表名 modify 列名 数据类型; 这个命令可以修改表结构此外,也可以... [阅读全文]
  • MySQL 行锁和表锁的含义及区别详解

    一、前言对于行锁和表锁的含义区别,在面试中应该是高频出现的,我们应该对mysql中的锁有一个系统的认识,更详细的需要自行查阅资料,本篇为概括性的总结回答。mys... [阅读全文]
  • MySQL 如何查询当前最新事务ID

    写在前面:在个别时候可能需要查看当前最新的事务 id,以便做一些业务逻辑上的判断(例如利用事务 id 变化以及前后时差,统计每次事务的响应时长等用途)。通常地,... [阅读全文]
  • 如何优雅、安全的关闭MySQL进程

    前言本文分析了 mysqld 进程关闭的过程,以及如何安全、缓和地关闭 mysql 实例,对这个过程不甚清楚的同学可以参考下。关闭过程1、发起 shutdown... [阅读全文]
  • 详解MySQL8.0​ 字典表增强

    详解MySQL8.0​ 字典表增强

    mysql中数据字典是数据库重要的组成部分之一,information_schema首次引入于mysql 5.0,作为一种从正在运行的mysql服务器检索元数据... [阅读全文]
  • 简述MySQL InnoDB存储引擎

    前言:存储引擎是数据库的核心,对于 mysql 来说,存储引擎是以插件的形式运行的。虽然 mysql 支持种类繁多的存储引擎,但最常用的当属 innodb 了,... [阅读全文]
验证码:
移动技术网