mysql存储过程

1. mysql存储过程实例

循环嵌套的时候,需要加上 BEGIN,END

	BEGIN
	#Routine body goes here...
		## 第一次循环,查询出需要的东西,
		DECLARE uuid,flowActiveInstanceId,modelId,flowActiveInstanceUserId VARCHAR(32);
		DECLARE done,insideDone INT;
		DECLARE listIdMap CURSOR FOR
			(SELECT a.id AS flowActiveInstanceId,b.model_id AS modelId FROM tabelA a LEFT JOIN tabelB b on a.flow_instance_id = b.id WHERE ***);
			DECLARE CONTINUE HANDLER FOR NOT FOUND SET done =1;
		OPEN listIdMap ;
			cursor_loop:LOOP
				FETCH listIdMap INTO flowActiveInstanceId,modelId;
			IF done=1 THEN
				leave cursor_loop;
			END IF;
				## 更新本地库信息
				UPDATE tbaleC SET `status`='100' WHERE id=flowActiveInstanceId;
				SET insideDone =0;   ## 重置标识
				BEGIN
					## 内循环遍历出节点的通知人
					DECLARE insideId CURSOR FOR
						(SELECT id AS flowActiveInstanceUserId FROM flow_activity_instance_user WHERE flow_activity_instance_id = flowActiveInstanceId);
						DECLARE CONTINUE HANDLER FOR NOT FOUND SET insideDone =1;		
					OPEN insideId;
						inside_loop:LOOP
							FETCH insideId	INTO flowActiveInstanceUserId;
						IF insideDone =1 THEN
							LEAVE inside_loop;
						END IF;
								## 内层循环体
								UPDATE flow_activity_instance_user SET `status`='100',message='message',create_datetime=NOW() WHERE id =flowActiveInstanceUserId;
								SET uuid = REPLACE(UUID(), "-", "");
								INSERT INTO flow_activity_instance_message(id,flow_activity_instance_user_id,message,status,create_datetime) VALUES(uuid,flowActiveInstanceUserId,'message','1',NOW());
						END LOOP inside_loop;
					CLOSE insideId;
				END;
				
		END LOOP cursor_loop;
CLOSE listIdMap; 
		
END
2. Hibrenate调用存储过程
		Session session = baseManager.getSession();
        SQLQuery query=session.createSQLQuery("{Call Test(?)}");
        query.setString(0,"1623937219085347");
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        List<Map> resultList = query.list();
        if(resultList!=null&&resultList.size()>0){
            for (int i=0;i<resultList.size();i++){
                System.out.println(resultList.get(i).toString());
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值