zoukankan      html  css  js  c++  java
  • 存储过程基本语法

      存储过程就是一条或多条SQL语句的集合,可视为批文件,但作用不仅限于批处理,本文介绍如何创建存储过程以及变量的使用,如何调用、查看等。

    创建语法如下:

              create procedure sp_name([proc_parameter]) (characteristics ...)  routine_body

    pro_parameter:参数列表,

    列表形式:[in|out|inout]  param_name  type

    characteristics:存储过程的特性,有以下取值

            language sql:说明toutine_body部分是由sql组成;

            [not] deterministic:指明相同的输入是否会得到相同的输出,deterministic表示结果确定,not deterministic表示不确定,默认为not deterministic;

            {contains sql | not sql | reads sql data | modifies sql data}:指明子程序使用sql的限制,其中contains sql指不包含读写数据的sql语句;not sql表示不包含sql语句;reads sql data说明子程序包含读数据的语句;modifies sql data表明子程序包含写数据的语句。默认contains sql。

            sql security {definer | invoker}:指明谁有权限来执行,definer表示只有定义者才能执行,invoker 表示拥有权限的调用者可以执行,默认情况下为definer。

            comment  'String':注释信息,可以用来描述存储过程。

    routine_body:sql代码内容,用Begin ...  End来表示sql代码的开始和结束。

    举个简单的应用例子,有表为fruits存有单价、名称等,创建存储过程返回所有水果的评均价格,代码如下:

            create procedure AvgFruitPrice(out param1 int)

            Begin 

               select avg(f_price) into param1 from fruits;

              End;

    变量的使用

        1.定义变量,语法如下:

            Delare var_name [,var_name] ... date_type[DEFAULT value];

            var_name是局部变量名称,DEFAULT value子句为变量提供初始值。

        2.为变量赋值,语法格式如下:

            Set var_name = expr1[,var_name = expr2] ...;

    声明三个变量,分别为var1,var2,var3,数据类型为int,使用set为变量赋值,代码如下:

            Declare var1, var2, var3 int;

            Set var1=10, var2=20;

            Set var3 = var1 + var2;

    还可以通过select ... from为一个变量赋值:select col_name[, ...] into var_name[, ...]  from table where...。

    流程控制的使用

        1.IF语句,语法格式如下:

            IF expr_condition THEN statement_list

              [ELSEIF expr_condition THEN statement_list]...

              [ELSE statement_list]

            END IF

        2.case语句,语法格式如下:

           CASE case_expr

              WHEN when_value THEN statement_list

              [WHEN when_value THEN statement_list]...

              [ELSE statement_list]

            END CASE

        3.LOOP语句(循环操作的过程),语法格式如下:

          [loop_label:] LOOP

            statement_list

          END LOOP [loop_label]

        4.LEAVE语句

          LEAVE语句用来退出循环。

            Delare id int default 0;

            add_loop:LOOP

              SET id = id + 1;

                IF id >= 10 THEN LEAVE add_loop;

                END IF;

            END LOOP add_loop;

        5.ITERATE 语句,语法形式:ITERATE label

          该语句只能出现在循环内,意为“再次循环”。

        6.REPEAT语句

          该语句创建一个带条件判断的循环的过程,每次语句执行完毕,会对条件表达式进行判断,如果表达式为真,则循环结束,否则重复循环,语法形式如下:

            [repeat_label:] REPEAT

              statement_list

            UNTIL expr_condition

            END REPEAT [repeat_label]

                     repeat_label为标注名称(可省略),直至expr_condition条件为真,才会退出循环。

        7.WHILE语句

          该语句创建带条件判断的循环过程,与REPEAT语句不同,WHILE 执行语句时先对表达式进行判断,如果为真则执行循环内语句,否则退出循环,语法形式如下:

            [while_label:] WHILE expr_condition DO

              statement_list

            END WHILE [while_label]

  • 相关阅读:
    爬取数据问题
    b站评论区爬取
    词云图制作
    情感分析
    一个progressbar widget
    jQuery ui effects
    在使用jQuery的时候不小心的内存泄漏
    在javascript中实现类似asp.net webcontrol中的render的方法
    jQuery 1.7的隐藏改动
    jQuery编写widget的一些窍门
  • 原文地址:https://www.cnblogs.com/itBscs/p/4889308.html
Copyright © 2011-2022 走看看