视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql存储过程示例代码_MySQL
2020-11-09 19:58:26 责编:小采
文档


drop procedure if existsP_SEQUENCE;/** 暂省略包@AUTO LIANGRUI 2014/6/27T_PRO_PRODUCT 表	排序 对整个表进行按序号排序 根据序号从新自然排序 重复序号的安创建日期分配序号	测试阶段测试调用	set @merid='TEST66';	call P_SEQUENCE(@merid);	**/create procedure P_PRODUCT_SEQUENCE( in v_merchar_id VARCHAR(100)) beginDECLARE v_idVARCHAR(100);DECLARE v_rowNo VARCHAR(100);DECLARE flag int;DECLARE e_error INTEGER DEFAULT 0;-- 定义游标 DECLARE c_cur CURSORforSelect a.id ,(@rowNum:=@rowNum+1) as rowNoFrom T_PRO_PRODUCT a ,(Select (@rowNum :=0)) bwhere MERCHANT_ID=v_merchar_idorder by ISNULL(a.sequence),a.sequence,a.create_dt; DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET e_error=1;SET flag=0;OPEN c_cur;-- 循环所有的行 REPEATFETCH c_cur INTO v_id,v_rowNo; update T_PRO_PRODUCT SET sequence= v_rowNo where ID=v_id; -- 循环结束UNTIL flag END REPEAT; -- 关闭游标 CLOSEc_cur;	-- 事务处理	IF e_error = 1 THEN	ROLLBACK;	ELSE	COMMIT;	END IF;end

上面的其实可以进行简化

SET @colNo = 0;

UPDATE T_PRO_PRODUCT SET SEQUENCE=(@colNo:=@colNo+1) WHERE MERCHANT_ID='TEST66' ORDER BY SEQUENCE, CREATE_DT DESC;

下载本文
显示全文
专题