MySQL 存储过程

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 /*删除定义*/   

你可能感兴趣的:(MySQL 存储过程)