首页 > 数据库 >mysql存储过程 便利查询结果集 并 获取结果集数据 插入新表数据

mysql存储过程 便利查询结果集 并 获取结果集数据 插入新表数据

时间:2022-12-15 12:01:24浏览次数:57  
标签:结果 -- 游标 project mysql report 新表 id unit

-- 建立存储过程之前需要判断该存储过程是否存在,若存在则删除
DROP PROCEDURE IF EXISTS insert_project_unit;
-- 创建存储过程,insert_project_unit为存储过程名
CREATE PROCEDURE insert_project_unit()
-- 标识存储过程开始
BEGIN
    -- 定义变量
    DECLARE s int DEFAULT 0;
    DECLARE tenantId varchar(20);
    DECLARE organizationId bigint(20);
    DECLARE userNo varchar(20);
    -- 定义游标,并将sql结果集赋值到游标中,report为游标名
    DECLARE report CURSOR FOR SELECT tenant_id, organization_id, user_no
                              FROM jixiaoguanjia.u_tenant_info;
    -- 声明当游标遍历完后将标志变量置为某个值
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET s = 100;
    -- 打开游标
    OPEN report;
    -- 将游标中的值赋值给变量,注意:变量名不要与sql返回的列名相同,变量顺序要和sql结果列的顺序一致
    FETCH report INTO tenantId, organizationId,userNo;
    -- 当s不等于1时,也就是未遍历完时,会一直循环
    WHILE s <> 1
        DO
            -- 执行业务逻辑
            insert into tenant_project_unit(create_user, gmt_create, modified_user, gmt_modified,
                                                          organization_id,
                                                          tenant_id, type, user_type, status_id, sort, name)
            SELECT userNo,
                   '2022-12-14 14:36:07',
                   userNo,
                   '2022-12-14 14:36:07',
                   organizationId,
                   tenantId,
                   type,
                   0,
                   status_id,
                   sort,
                   name
            from jixiaoguanjia.tenant_project_unit
            where organization_id = 0;
            -- 当s等于1时代表遍历已完成,退出循环
            FETCH report INTO tenantId, organizationId,userNo;
        END WHILE;
    -- 关闭游标
    CLOSE report;
-- 标识存储过程结束
END;
CALL insert_project_unit();
DROP PROCEDURE IF EXISTS insert_project_unit;

 

标签:结果,--,游标,project,mysql,report,新表,id,unit
From: https://www.cnblogs.com/zhangrongfei/p/16984649.html

相关文章

  • MYSQL安装
    MYSQL安装一.DBA工作内容及课程体系img二.MySQL课程体系介绍三.DBA的职业素养四.MySQL简介及安装01什么是数据?数据(data)是事实或观察的结果,是对客观事物的逻辑归......
  • 设置MySql事务隔离级别的坑
    结论设置MySql会话级别事务隔离级别时需要先设置当前会话的事务隔离级别,然后再开启事务,否则新开启的事务隔离级别不是新设置的,而是之前的。验证过程1.查看当前会话的隔......
  • MySQL的字符集配置
      utf8的锅:场景 :之前在给客户做微商城时,需要保存微信的授权信息,此时就有一个nickname字段,在设计数据表时,潜意识的将表的存储格式设置为utf8,生产上线一段时间后偶尔出现......
  • mysql参数配置文件
    (1)参数配置文件中的内容以键值对形式存在。(2)如何查看键值对?showvariableslike'%name%';或者查看information_schema库下的global_variables视图; 如何修改呢?  1、innod......
  • golang.mysql
    一、mysql操作基本语法1、创建名称nulige的数据库 ​​CREATEDATABASEnuligeDEFAULTCHARSETutf8COLLATEutf8_general_ci;<br><br>usenulige​​2、建表,Id自增​​c......
  • MySQL锁
       分类 MySQL中的锁,按照锁的粒度分,分为以下三类: 全局锁:锁定数据库中的所有表。表级锁:每次操作锁住整张表。行级锁:每次操作锁住对应的行数据。全局锁全局......
  • MySQL
    MySQL临时表MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。临时表在MySQL3.23版本中添......
  • mysql命令行操作
    1、展示数据库2、进入数据库、查看数据库中的表......
  • Docker 中应用(tomcat 、nginx、mysql、redis)部署
    1.tomcat在docker安装2.nginx在docker安装3.mysql在docker安装4.redis在docker中文件安装......
  • EMQx 通过mysql实现 acl
    Acl访问控制说明:按照道理来说 mysql实现acl和mysql的鉴权,要在一块的说明的,但是在由于在理解鉴权的时候对acl的理解不是那么深刻,所以只能分开来验证和说明了。虽然EMQ已......