zoukankan      html  css  js  c++  java
  • [笔记]快速上手存储过程

     存储过程调试工具

    dbForge Studio for MySQL http://www.devart.com/dbforge/mysql/studio/
    使用方式: http://www.cnblogs.com/freeliver54/archive/2012/12/06/2805134.html
    1.存储过程概述
    a.创建存储过程

    create procedure sp_name()
    begin
    .........
    end

    b.调用存储过程
    1.基本语法: call sp_name() # 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
    c.删除存储过程
    1.基本语法:drop procedure sp_name #不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
    d.查看存储过程
    1.show procedure status #显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
    2.show create procedure sp_name #显示某一个mysql存储过程的详细信息

    2.存储过程语法介绍:
    a.输入参数
    mysql存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT
    Create procedure|function([[IN |OUT |INOUT ] 参数名 数据类形...])
    IN 输入参数 ,表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
    OUT 输出参数,该值可在存储过程内部被改变,并可返回
    INOUT 输入输出参数,调用时指定,并且可被改变和返回
    INOUT参数例子:

    CREATE PROCEDURE sp_demo_inout_parameter(INOUT p_inout INT)
    BEGIN
    SELECT p_inout;
    SET p_inout=2;
    SELECT p_inout;
    END;

    b.数据类型及运算符
    b.1、变量:
    自定义变量:DECLARE a INT ; SET a=100; 可用以下语句代替:DECLARE a INT DEFAULT 100;
    变量分为用户变量和系统变量,系统变量又分为会话和全局级变量
    用户变量:用户变量名一般以@开头,滥用用户变量会导致程序难以理解及管理
    1、 在mysql客户端使用用户变量
    mysql> SELECT 'Hello World' into @x;
    mysql> SELECT @x;
    mysql> SET @y='Goodbye Cruel World';
    mysql> select @y;
    mysql> SET @z=1+2+3;
    mysql> select @z;

    2、 在存储过程中使用用户变量
    mysql> CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World'); #存储过程中如果只有一条sql,可以省略BEGIN,END
    mysql> SET @greeting='Hello';
    mysql> CALL GreetWorld( );
    3、 在存储过程间传递全局范围的用户变量
    mysql> CREATE PROCEDURE p1( ) SET @last_procedure='p1';
    mysql> CREATE PROCEDURE p2( ) SELECT CONCAT('Last procedure was ',@last_procedure);
    mysql> CALL p1( );
    mysql> CALL p2( );

    b.2、运算符:
    1.算术运算符

    +   SET var1=2+2;   4
    -   SET var2=3-2;       1
    *   SET var3=3*2;       6
    /   SET var4=10/3;      3.3333
    DIV 整除   SET var5=10 DIV 3; 3
    % 取模   SET var6=10%3 ;     1

    2.比较运算符

    >    大于  1>2 False
    <   小于  2<1 False
    <= 小于等于  2<=2 True
    >=      大于等于  3>=2 True
    BETWEEN 在两值之间  5 BETWEEN 1 AND 10 True
    NOT BETWEEN 不在两值之间  5 NOT BETWEEN 1 AND 10 False
    IN   在集合中   5 IN (1,2,3,4) False
    NOT IN   不在集合中  5 NOT IN (1,2,3,4) True
    =    等于  2=3 False
    <>, != 不等于 2<>3 False
    <=> 严格比较两个NULL值是否相等  NULL<=>NULL True
    LIKE    简单模式匹配  "Guy Harrison" LIKE "Guy%" True
    REGEXP 正则式匹配  "Guy Harrison" REGEXP "[Gg]reg" False
    IS NULL    为空  0 IS NULL False
    IS NOT NULL 不为空  0 IS NOT NULL True

     3.逻辑运算符、位运算符

    |  或  
    &  与  
    <<  左移位  
    >> 右移位  
    ~    单目运算,按位取反

    b.3、注释

    mysql存储过程可使用两种风格的注释
    双横杠:-- 该风格一般用于单行注释
    c风格:/* 注释内容 */ 一般用于多行注释
    b.4、流程控制
      一、顺序结构
      二、分支结构 if case
      三、循环结构
      for 循环
      while 循环 while ···· end while
      loop 循环 loop ·····end loop
      repeat unti l循环 repeat···· end repeat
    b.5、 LABLES 标号
      标号可以用在begin repeat while 或者loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。
    b.6、 ITERATE迭代
    b.7、区块定义
      #begin和end如同C语言中的{ 和 }
      begin ...... end;
      给区块起别名,如:
      lable:begin
      ...........
      end lable; #用leave lable;跳出区块,执行区块以后的代码

  • 相关阅读:
    xhtml中隐藏滚动条
    一个题目包括70种网页制作常用技巧 (转)
    Oracle 数据类型映射 (ADO.NET)
    oracle数据库 数据类型
    VisualSVN Server的配置和使用方法
    oracle 权限管理
    项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】
    showModalDialog和showModelessDialog使用心得
    Bug跟踪管理【Bug Trace and Management】
    开发WAP站点之使用PC电脑浏览器访问WAP手机站点 (转)
  • 原文地址:https://www.cnblogs.com/janehoo/p/5386263.html
Copyright © 2011-2022 走看看