• MySQL存储过程之参数和复合语句


    CREATE PROCEDURE p5 ([
        [ IN | OUT | INOUT ] name1 data-type ,
        ...                                                       ,
        [ IN | OUT | INOUT ] nameN data-type 
    ]) ... 

      参数列表可以为空,也可以有多个,关键词IN | OUT | INOUT,可省略,默认IN.

    1. IN 输入的例子

    mysql> CREATE PROCEDURE p5(p INT)
        SET @x = p //
    mysql> CALL p5(12345)//
    mysql> SELECT @x//

      上面代码执行后会显示输入的12345.过程体内将参数p的值赋值给会话变量x,然后调用过程并传递12345给参数p,调用完毕后显示会话变量@x.

      说明变量名前加@表示为会话变量,作用域为整个用户的会话周期.不加@表示用户自定义的局部变量.关于会话变量:

      1) 可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。

      2) 用户变量与连接有关,即一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。

      3) 用户变量的形式为@var_name,其中变量名var_name可以由当前字符集的文字数字字符、‘.’、‘_’和‘$’组成。 默认字符集是cp1252 (Latin1)。可以用mysqld的default-character-set选项更改字符集。

      4) 用户变量名对大小写不敏感。
      5) 设置用户变量的一个途径是执行SET语句:

    SET @var_name = expr [, @var_name = expr] ...

        对于SET,可以使用=或:=作为分配符。分配给每个变量的expr可以为整数、实数、字符串或者NULL值。

        也可以用语句代替SET来为用户变量分配一个值。在这种情况下,分配符必须为:=而不能用=,因为在非SET语句中=被视为一个比较 操作符:

    mysql> SET @t1=0, @t2=0, @t3=0;
    mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;

    +-------------------------------+------+------+------+

    | @t1:=(@t2:=1)+@t3:=4  | @t1 | @t2  | @t3 |

    +-------------------------------+------+------+------+

    |          5                           |    5  |    1   |    4  |

    +-------------------------------+------+------+------+

      6) 用户变量可以用于表达式中。目前不包括明显需要文字值的上下文中,例如SELECT语句的LIMIT子句,或者LOAD DATA语句的IGNORE number LINES子句。

      7) 如果使用没有初始化的变量,其值是NULL。

    2. OUT 输出的例子

    mysql > CREATE PROCEDURE p6 (OUT p INT)
             -> SET p = -5 //
    mysql> CALL p6(@y) //
    mysql> SELECT @y //  

      本例中,p是输出参数,调用过程将p的值传入会话变量@y中.

    3. 复合语句

    CREATE PROCEDURE p7 ()
    BEGIN
        SET @a = 5;
        SET @b = 5;
        INSERT INTO t VALUES (@a);
        SELECT s1 * @a FROM t WHERE s1 >= @b;
    END; //   /* 这个语句将不会被调用*/ 

      复合语句一般由BEGIN/END块包括.可以用块去封装多条语句,完成一些sql语句进行变量定义和流程控制等.

      

  • 相关阅读:
    第十四节:Web爬虫之Ajax数据爬取
    第十三节:web爬虫之Redis数据存储
    第十二节:Web爬虫之MongoDB数据库安装与数据存储
    第十一节:Web爬虫之数据存储(数据更新、删除、查询)
    第十节:Web爬虫之数据存储与MySQL8.0数据库安装和数据插入
    第九节:web爬虫之urllib(五)
    第八节:web爬虫之urllib(四)
    第七节:web爬虫之urllib(三)
    第六节:web爬虫之urllib(二)
    第五节:web爬虫之urllib(一)
  • 原文地址:https://www.cnblogs.com/free-coder/p/4774005.html
Copyright © 2020-2023  润新知