declare row_id int ; -- 自定义变量1 declare row_num int ; -- 自定义变量2 declare done INT DEFAULT FALSE; -- 声明done 状态为False declare temp int ; declare my_cursor CURSOR FOR select id,num from A; -- 声明游标 declare CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 当没有数据时,done为True open my_cursor; -- 打开游标局部 xxoo: LOOP fetch my_cursor into row_id,row_num; -- 取一行的数据 if done then leave xxoo; END IF ; set temp = row_id + row_num; insert into B( number ) values ( temp ); end loop xxoo; close my_cursor; end // delimter ;

注意:性能低,能不用就不用,对每一行数据进行单独操作,用游标

6、动态执行sql(防止sql注入)

delimiter //
create procedure p6(
    in tpl varchar(255),
    in arg int
begin 
    set @xo = arg;
    PREPARE xxx FROM 'select * from student where sid > ?';    --xxx是变量,任意命名,
    EXECUTE xxx USING @xo;     -- 与上面的SQL语句结合,格式化语句 @xo要是session的变量
    DEALLOCATE prepare prod;     --执行格式化语句
end  //
delimter ;

防sql注入

pymysql 和 动态执行mysql