当前位置:网站首页>存储过程测试入门案例
存储过程测试入门案例
2022-06-26 09:34:00 【MiMing仔】
CREATE PROCEDURE `test`.`new_procedure` ()
BEGIN
-- 需要定义接收游标数据的变量
DECLARE a CHAR(16);
-- 游标
DECLARE cur CURSOR FOR SELECT i FROM test.t;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- 打开游标
OPEN cur;
-- 开始循环
read_loop: LOOP
-- 提取游标里的数据,这里只有一个,多个的话也一样;
FETCH cur INTO a;-- 抓取FETCH的时候,如果cur为null(SELECT i FROM test.t),则会触发SET done = TRUE
-- 声明结束的时候
IF done THEN
LEAVE read_loop;
END IF;
-- 这里做你想做的循环的事件
INSERT INTO test.t VALUES (a);
END LOOP;
-- 关闭游标
CLOSE cur;
END
在MySQL的存储过程中经常会看到这句话:DECLARE CONTINUE HANDLER FOR NOT FOUND。
它的含义是:若没有数据返回,程序继续,并将变量IS_FOUND设为0 ,这种情况是出现在select XX into XXX from tablename的时候发生的。
-- start by lxm
DROP PROCEDURE IF EXISTS loan_contract_no_rule_init;
CREATE PROCEDURE loan_contract_no_rule_init()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE ruleId VARCHAR(32) DEFAULT '1528655117129572354';
DECLARE rule_detail_id_insert VARCHAR(32);
DECLARE rule_vale_insert VARCHAR(512);
-- 定义游标
DECLARE cur CURSOR FOR
SELECT rule_detail_id as rule_detail_id_insert,rule_vale as rule_vale_insert FROM trade_rule_detail_h WHERE rule_key = 'ATTACHMENT_TYPE' AND rule_detail_id IN (SELECT rule_detail_id FROM ent_trade_rule_info t WHERE
1 = 1 AND trade_code = 'REGISTER' AND STATUS = 1 AND prod_id = 'C01P00001' AND institution_id IN ( SELECT ent_id FROM prod_cif.cif_ent_type_ext WHERE ent_type = 9 AND prod_type = '01' ));
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
-- 打开游标
OPEN cur;
-- 提取游标里的数据;
FETCH cur INTO rule_detail_id_insert,rule_vale_insert;
WHILE done<>1 DO
-- 历史快照插入明细
IF (rule_vale_insert = 'SELL_PROTOCOL') THEN
-- 融单协议 >初始化> 融单合同编号
INSERT INTO trade_rule_detail_h(id,rule_detail_id,rule_id,rule_key,rule_status,rule_vale)VALUES
(REPLACE(UUID(),'-',''),rule_detail_id_insert,ruleId,'LOAN_CONTRACT_NO',1,'LOAN_CONTRACT_NO');
ELSEIF (rule_vale_insert = 'LAST_TRADE_BACK') THEN
-- 最后一手贸易背景材料 > 初始化为 > 贸易合同编号
INSERT INTO trade_rule_detail_h(id,rule_detail_id,rule_id,rule_key,rule_status,rule_vale)VALUES
(REPLACE(UUID(),'-',''),rule_detail_id_insert,ruleId,'LOAN_CONTRACT_NO',1,'BACKGROUND_CONTRACT_NO');
ELSEIF (rule_vale_insert ='SELL_PROTOCOL,LAST_TRADE_BACK') THEN
-- 选择了融单协议和最后一手贸易背景材料 > 初始化 > 融单合同编号
INSERT INTO trade_rule_detail_h(id,rule_detail_id,rule_id,rule_key,rule_status,rule_vale)VALUES
(REPLACE(UUID(),'-',''),rule_detail_id_insert,ruleId,'LOAN_CONTRACT_NO',1,'LOAN_CONTRACT_NO');
ELSE
-- 其他无
INSERT INTO trade_rule_detail_h(id,rule_detail_id,rule_id,rule_key,rule_status,rule_vale)VALUES
(REPLACE(UUID(),'-',''),rule_detail_id_insert,ruleId,'LOAN_CONTRACT_NO',1,'');
END IF;
FETCH cur INTO rule_detail_id_insert,rule_vale_insert;
END WHILE;
CLOSE cur;
END;
CALL loan_contract_no_rule_init();
-- end by lxm
边栏推荐
- 我在中山,到哪里开户比较好?在线开户安全么?
- My creation anniversary
- 【CVPR 2019】Semantic Image Synthesis with Spatially-Adaptive Normalization(SPADE)
- 英语常用短语
- c语言语法基础之——指针( 多维数组、函数、总结 ) 学习
- Redis notes (13) - scan and keys search for specific prefix key fields (command format, usage examples, locating large keys)
- Leetcode basic calculator 224 227. follow up 394
- 同花顺炒股软件安全性怎样?在同花顺怎么开户
- Flutter's brain map notes are easy to find and search!
- c语言语法基础之——函数 小程序 求阶乘
猜你喜欢
Single sign on logic
online trajectory generation
Summary of common commands of vim
Jz2440--- using uboot burning program
Optimization of power assisted performance of QPM suspended window
[Journal of Computer Aided Design & computer graphics] overview of research on pedestrian re recognition methods based on generated countermeasure network
install opencv-contrib-dev to use aruco code
我的创作纪念日
软件测试---如何选择合适的正交表
深度学习(初识tensorflow2.版本)之三好学生成绩问题(1)
随机推荐
欧冠比赛数据集(梅西不哭-离开巴萨也可能再创巅峰)
Badge series 7: use of codacy
Install new version cmake & swig & tinyspline
jz2440---使用uboot燒錄程序
Speed test of adding, deleting, modifying and querying 5million pieces of data in a single MySQL table
This new change of go 1.16 needs to be adapted: the changes of go get and go install
Enter the page input box to automatically obtain the focus
pcl install
Redis notes (15) - Pipeline (the client packages and sends batch commands to save network overhead)
Meaning of go runtime
Solve Django's if Version (1, 3, 3): raise improverlyconfigured ('mysqlclient 1.3.3 or new is required
同花顺炒股软件安全性怎样?在同花顺怎么开户
Origin of QPM
Jz2440 - - - utiliser le programme de gravure uboot
力扣------从数组中移除最大值和最小值
Differences between VI and vim and common commands
SQL modification of table structure
从tf 1.x到tf 2.6(遇到的就过来更新更新)
测试实践——app 测试注意点
2021-11-12 vrep视觉传感器配置