mysql存储过程遍历
发布时间: 2022-06-05 14:00:27
CREATEDEFINER=`root`@`%`PROCEDURE`insertPresale`()
BEGIN
#Routinebodygoeshere...
DECLAREdoneINTDEFAULT0;/*用于判断是否结束循环*/
DECLAREgoodsIdVARCHAR(255);#标记商品id
DECLAREflagINTDEFAULT0;#标记数据库是否包含此条商品记录
/*用于存储结果集的记录*/
/*定义游标*/
_idFROM`sys_goods_publish`WHEREpresale=1ANDpresale_time<=NOW();
/*定义设置循环结束标识done值怎么改变的逻辑*/
=1;/*done=true;亦可*/
OPENidCur;/*打开游标*/
/*循环开始*/
REPEAT
#/*如果要fetch多列应该这样写,fetchcur/*对应下面的idCur*/
FETCHidCurINTOgoodsId;/*还可以fetch多列(假设结果集的记录不是单列的话)*/
IFNOTdoneTHEN/*数值为非0,MySQL认为是true*/
SELECTCOUNT(*)INTOflagFROM`itemsinfonew`WHERETaoBaoitemId=goodsId;
IF(flag>0)THEN#如果数据库中有爬取此条记录则删除已用户发布的为准
DELETEFROM`itemsinfonew`WHERETaoBaoitemId=goodsId;
ENDIF;
INSERTINTO`itemsinfonew`(TaoBaoitemId,CouponID,CreateSourceName)
SELECTgoods_id,coupon_id,SUBSTRING("customer_fd",0.5)
FROM`sys_goods_publish`
WHEREpresale_time<=NOW()ANDgoods_id=goodsId;
UPDATE`sys_goods_publish`SETpresale=0WHEREpresale=1ANDpresale_time<=NOW()ANDgoods_id=goodsId;
ENDIF;
UNTILdoneENDREPEAT;
CLOSEidCur;/*关闭游标*/
B. mysql存储过程里怎么循环一张表
游标遍历即可
C. MySQL存储过程会直接查询主库
主库和从库都直接可以查询。
MySQL存储过程-循环遍历查询到的结果集:根据MySQL的语法创建存储过程,要注意的是如果循环遍历查询到的结果集,取出结果集中的数据做操作。
D. mysql 使用存储过程 循环查找数据
delimiter
$$
mysql>
mysql>
CREATE
PROCEDURE
myProc()
//创建while循环的存储过程
if分支语句示例
->
BEGIN
->
->
DECLARE
i
int;
->
SET
i=1;
->
loop1:
WHILE
i<=10
DO
->
IF
MOD(i,2)<>0
THEN
/*Even
number
-
try
again*/
->
SELECT
CONCAT(i,"
is
an
odd
number");
->
END
IF;
->
SET
i=i+1;
->
END
WHILE
loop1;
->
END$$
Query
OK,
0
rows
affected
(0.00
sec)
这种也可以
E. mysql存储过程如何遍历字符串的每个字符,并把每个字符转换成int(假设都是数字字符)
循环,每次循环截取一位转换
F. MySql 存储过程遍历游标出错
MySql 存储过程遍历游标出错
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET DONE = 1;
这种语句是异常捕获内容,在mysql中都是使用HANDLER 来捕获异常的。
建议你看下:MySQL存储过程详解
MySQL游标循环遍历的使用
热点内容