1、局部变量
在存储过程体中可以声明局部变量,用来存储存储过程体中临时结果。
DECLARE var_name[,…] type [DEFAULT value]
var_name:指定局部变量的名称
type:用于声明局部变量的数据类型
default子句:用于为局部变量指定一个默认值。若没有指定,默认为null.
使用说明:
局部变量只能在存储过程体的begin…end语句块中声明。
局部变量必须在存储过程体的开头处声明。
局部变量的作用范围仅限于声明它的begin..end语句块,其他语句块中的语句不可以使用它。
局部变量不同于用户变量,两者区别:局部变量声明时,在其前面没有使用@符号,并且它只能在begin..end语句块中使用;而用户变量在声明时,会在其名称前面使用@符号,同时已声明的用户变量存在于整个会话之中。
2、SET 语句
使用set语句为局部变量赋值
SET var_name=expr
SET cid=910;
3、SELECT… INTO 语句
把选定列的值直接存储到局部变量中,语法格式
SELECT col_name[,…] INTO var_name[,…] table_expr
col_name:用于指定列名
var_name:用于指定要赋值的变量名
table_expr:表示select语句中的from字句及后面的语法部分
说明:存储过程体中的select…into语句返回的结果集只能有一行数据。
4、定义处理程序
是事先定义程序执行过程中可能遇到的问题。并且可以在处理程序中定义解决这些问题的办法。这种方式可以提前预测可能出现的问题,并提出解决方法。
DECLARE handler_type HANDLER FOR condition_value[,…] sp_statement
handler_type:CONTINUE | EXIT | UNDO
Condition_value:Sqlwarning | not found | sqlexception
5、IF语句
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list]…
[ELSE statement_list]
END IF
Search_condition参数:条件判断语句
Statement_list参数:不同条件的执行语句
多重IF的存储过程实例
6、CASE 语句
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list]…
[ELSE statement_list]
END CASE
7、WHILE 语句
WHILE search_condition DO
Statement_list
END WHILE
判断条件search_condition是否为真,若为真,则执行statement_list中的语句,然后再进行判断,如若仍然为真则继续循环,直至条件判断不为真时循环结束。
8、REPEAT 语句
REPEAT
Statement_list
UNTIL search_condition
END REPEAT
Repeat语句首先执行statement_list中的语句,然后判断条件search_condition是否为真,倘若为真,则结束循环,若不为真,继续循环。
Repeat先执行后判断,while先判断后执行。
9、LOOP 语句
test:LOOP
SET s1 = s1+1;
IF s1 = 5 THEN
LEAVE test;
END IF;
END LOOP;
LOOP没有循环条件,会不停的循环直到遇到 "LEAVE test;" "test"是自定义的LOOP标记
10、PREPARE 语句
PREPARE statement_name FROM sql_text /*定义*/
EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/
DEALLOCATE PREPARE statement_name /*删除定义*/