美文网首页
MySQL 存储过程

MySQL 存储过程

作者: ChanHsu | 来源:发表于2017-04-12 09:44 被阅读73次

    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 存储过程

          本文链接:https://www.haomeiwen.com/subject/xrgpattx.html