博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
写一个存储过程,将一个数据表中的数据定时存入另一个表中,能够进行实时更新表中的数据,如果表中没有会直接插入新数据...
阅读量:6176 次
发布时间:2019-06-21

本文共 922 字,大约阅读时间需要 3 分钟。

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_test`()

BEGIN
DECLARE chkc INT;
DECLARE id_tmp INT;
DECLARE age_tmp INT;
DECLARE name_tmp VARCHAR(32);
DECLARE flag INT DEFAULT TRUE;//定义一个flag设置为TRUE
DECLARE cur CURSOR FOR SELECT id FROM testname;//定义游标,以testname表中的id字段为游标进行循环遍历
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = FALSE;//如果程序有未声明的变量,flag变为FLASE循环遍历中止
OPEN cur;//打开游标
REPEAT//循环遍历
    FETCH cur INTO id_tmp;//将当前遍历到的赋值给声明的id_tmp变量
    SELECT COUNT(*) INTO chkc FROM testname_detail    WHERE id = id_tmp; 
    IF chkc = 1 THEN
    UPDATE testname_detail,testname    SET testname_detail.age = (SELECT age FROM testname WHERE id = id_tmp) WHERE testname_detail.id = id_tmp;
    ELSE
    SELECT age, name INTO age_tmp, name_tmp FROM testname WHERE id = id_tmp;
    INSERT INTO testname_detail(id,name,age) VALUES(id_tmp,name_tmp,age_tmp);
    END IF;
UNTIL flag = FALSE 
END REPEAT;
CLOSE cur;
END

转载于:https://www.cnblogs.com/hmpcly/p/9582939.html

你可能感兴趣的文章
【操作系统】实验四 主存空间的分配和回收
查看>>
Log4j 配置 的webAppRootKey参数问题
查看>>
VMware ESXi 5.0中时间配置中NTP设置
查看>>
C++中memset()函数笔记
查看>>
oracle sql 数结构表id降序
查看>>
使用cnpm加速npm
查看>>
MySql跨服务器备份数据库
查看>>
一个字典通过dictionaryWithDictionary 他们的内存指针是不同的
查看>>
HTTP 错误 500.0的解决方法。
查看>>
CCF201612-1 中间数(解法三)(100分)
查看>>
百度前端任务一学习的知识
查看>>
C# 四个字节十六进制数和单精度浮点数之间的相互转化
查看>>
jmeter分布式压测
查看>>
JavaNIO的总结
查看>>
iOS子视图超出父视图的部分视图响应事件的问题
查看>>
iOS 模块化进阶整理记录
查看>>
前端状态管理框架之Redux
查看>>
React-Native 样式指南
查看>>
Atom插件开发-使用自己的Chevereto图床API
查看>>
tinker热修复——补丁加载合成
查看>>