-
变量作用域
内部的变量在其作用域范围内享有更高的优先权,当执行到end。变量时,内部变量消失,此时已经在其作用域外,变量不再可见了,应为在存储过程外再也不能找到这个申明的变量,但是你可以通过out参数或者将其值指派给会话变量来保存其值。mysql > DELIMITER //
mysql > CREATE PROCEDURE proc3()
-> begin
-> declare x1 varchar() default 'outer';
-> begin
-> declare x1 varchar() default 'inner';
-> select x1;
-> end;
-> select x1;
-> end;
-> //
mysql > DELIMITER ; -
条件语句
-
if-then -else 语句
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc2(IN parameter int)
-> begin
-> declare var int;
-> set var=parameter+;
-> if var= then
-> insert into t values();
-> end if;
-> if parameter= then
-> update t set s1=s1+;
-> else
-> update t set s1=s1+;
-> end if;
-> end;
-> //
mysql > DELIMITER ; -
case 语句
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc3 (in parameter int)
-> begin
-> declare var int;
-> set var=parameter+;
-> case var
-> when then
-> insert into t values();
-> when then
-> insert into t values();
-> else
-> insert into t values();
-> end case;
-> end;
-> //
mysql > DELIMITER ;
-
if-then -else 语句
-
循环语句
-
while ···· end while 语句
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc4()
-> begin
-> declare var int;
-> set var=;
-> while var< do
-> insert into t values(var);
-> set var=var+;
-> end while;
-> end;
-> //
mysql > DELIMITER ; -
repeat···· end repeat 语句
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc5 ()
-> begin
-> declare v int;
-> set v=;
-> repeat
-> insert into t values(v);
-> set v=v+;
-> until v>=
-> end repeat;
-> end;
-> //
mysql > DELIMITER ;它在执行操作后检查结果,而while则是执行前进行检查。
-
loop ·····end loop 语句
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc6 ()
-> begin
-> declare v int;
-> set v=;
-> LOOP_LABLE:loop
-> insert into t values(v);
-> set v=v+;
-> if v >= then
-> leave LOOP_LABLE;
-> end if;
-> end loop;
-> end;
-> //
mysql > DELIMITER ;loop循环不需要初始条件,这点和while 循环相似,同时和repeat循环一样不需要结束条件, leave语句的意义是离开循环。
-
while ···· end while 语句
-
LABLES 标识
LABLES(例如 LOOP_LABLE:)可以用在begin repeat while 或者loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。
-
ITERATE 迭代
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc10 ()
-> begin
-> declare v int;
-> set v=;
-> LOOP_LABLE:loop
-> if v= then
-> set v=v+;
-> ITERATE LOOP_LABLE;
-> end if;
-> insert into t values(v);
-> set v=v+;
-> if v>= then
-> leave LOOP_LABLE;
-> end if;
-> end loop;
-> end;
-> //
mysql > DELIMITER ;通过引用复合语句的标号,来从新开始复合语句
相关文章
- 01-28sql 语句随机时间存储过程
- 01-28存储过程创建达梦dmfldr控制文件和执行命令
- 01-28如何导出存储过程、函数、包和触发器的定义语句?如何导出表和索引的创建语句?...
- 01-2807--视图、触发器、存储过程、函数、流程控制
- 01-28使用存储过程 先修改要查询的语句在查询
- 01-28C#执行存储过程,或SQL语句,返回DataSet
- 01-28【SQL语句】 - Ctrl+3 查询表属性的存储过程
- 01-28用SQL语句获得一个存储过程返回的表
- 01-28SqlServer查看表、存储过程、耗时查询、当前进程、开销较大的语句
- 01-28jeecg Datagrid 获取列表 查询语句 调用存储过程