当前位置:首页>开发>正文

mysql的for循环 ORACLE中的for循环怎么转为mysql的for循环

2023-04-11 23:42:12 互联网 未知 开发

mysql的for循环 ORACLE中的for循环怎么转为mysql的for循环

ORACLE中的for循环怎么转为mysql的for循环

换个写法,mysql里面我也不知道如何用 for in loop来处理。

例如:

CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT FALSE
DECLARE a CHAR(16)
DECLARE b, c INT
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE
OPEN cur1
OPEN cur2
read_loop: LOOP
FETCH cur1 INTO a, b
FETCH cur2 INTO c
IF done THEN
LEAVE read_loop
END IF
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b)
ELSE
INSERT INTO test.t3 VALUES (a,c)
END IF
END LOOP
CLOSE cur1
CLOSE cur2
END

mysql sql中流程控制有for循环吗?

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)

这种也可以

for循环变量

public class hello{
public static void main(String[] args){
int a,sum=0
for(a=1a<=100a ){
sum=sum a}
System.out.println(sum)
System.out.println(a)
}
}

mysql存储过程里怎么循环一张表

给你一个 参考,自己套着 试吧

--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数

create procedure p_procedurecode(in sumdate varchar(10))
begin
declare v_sql varchar(500) --需要执行的SQL语句
declare sym varchar(6)

declare var1 varchar(20)
declare var2 varchar(70)
declare var3 integer

--定义游标遍历时,作为判断是否遍历完全部记录的标记
declare no_more_departments integer DEFAULT 0

--定义游标名字为C_RESULT
DECLARE C_RESULT CURSOR FOR
SELECT barcode,barname,barnum FROM tmp_table

--声明当游标遍历完全部记录后将标志变量置成某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_departments=1

set sym=substring(sumdate,1,6) --截取字符串,并将其赋值给一个遍历

--连接字符串构成完整SQL语句,动态SQL执行后的结果记录集,在MySQL中无法获取,因此需要转变思路将其放置到一个临时表中(注意代码中的写法)。一般写法如下:

-- Create TEMPORARY Table 表名(Select的查询语句)
set v_sql= concat(Create TEMPORARY Table tmp_table(select aa as aacode,bb as aaname,count(cc) as ccnum from h,sym, where substring(dd,1,8)=,sumdate, group by aa,bb))

set @v_sql=v_sql --注意很重要,将连成成的字符串赋值给一个变量(可以之前没有定义,但要以@开头)
prepare stmt from @v_sql --预处理需要执行的动态SQL,其中stmt是一个变量
EXECUTE stmt --执行SQL语句
deallocate prepare stmt --释放掉预处理段

OPEN C_RESULT --打开之前定义的游标
REPEAT --循环语句的关键词
FETCH C_RESULT INTO VAR1, VAR2, VAR3 --取出每条记录并赋值给相关变量,注意顺序

--执行查询语句,并将获得的值付给一个变量 @oldaacode(注意如果以@开头的变量可以不用通过declare语句事先声明)
select @oldaacode:=vcaaCode from T_sum where vcaaCode=var1 and dtDate=sumdate
if @oldaacode=var1 then --判断
update T_sum set iNum=var3 where vcaaCode=var1 and dtDate=sumdate
else
insert into T_sum(vcaaCode,vcaaName,iNum,dtDate) values(var1,var2,var3,sumdate)
end if
UNTIL no_more_departments END REPEAT --循环语句结束
CLOSE C_RESULT --关闭游标

DROP TEMPORARY TABLE tmp_table --删除临时表
end