控制台写简单过程
创建简单的循环脚本,可快速执行:
1,定义结束标记:
delimiter ||
2,创建过程
drop procedure if exists tmp_procedure ||
create procedure tmp_procedure()
begin
declare i int;
set i=0;
while i < 5 do
insert into t values(i);
set i=i+1;
select sleep(1);
end while;
end ||
3,恢复结束标记:
delimiter ;
4,执行:
call tmp_procedure();
5,删除:
drop procedure if exists tmp_procedure
6,完成
支持DDL,commit,rollback
不支持load data infile
delimiter $$
create procedure pname(IN p1)
begin
#以下是“游标“”知识点,解决复杂问题。游标方法不能解决explain类特殊SQL,能解决select类sql。
declare vara int;
declare varb int;
declare cur_001 CURSOR FOR select a1,a2 from xxx;
declare EXIT HANDLER FOR NOT FOUND CLOSE cur_001;
OPEN CUR_001;
REPEAT
FETCH cur_001 INTO vara,varb;
UNTIL 0 END REPEAT;
CLOSE CUR_001;
end $$
delimiter ;
变量:
必须定义在begin和end中,在复合语句开头,并在任何其他语句前面。
declare varName Date;与java相反。
流程控制语句:
if condition1 then sta1
elseiff con2 then st2
else st3
end if
case con1
when when_value1 then st1
when when_value2 then st2
else st3
end case
或者
case when con1 then st1
when con2 then st2
else st3
end case
[begin_label]LOOP
st1
if xxx then
leave [label];
end if;
iterate [label];//跳过循环
END LOOP [end_label]
REPEAT:
[begin_label:] EEPEAT
st1
UNTIL search_condition
END REPEAT[end_label]
WHILE:
[begin_label:] WHILE xxx DO
st1
END WHILE [end_label]
调度器:
在繁忙和性能要求高的数据库服务器上,慎重部署和启用调度器。