• MySQL存储过程之新sql语句--变量


    1. 在复合语句中声明变量的指令是DECLARE:

    1 CREATE PROCEDURE p8 ()
    2 BEGIN
    3     DECLARE a INT;
    4     DECLARE b INT;
    5     SET a = 5;
    6     SET b = 5;
    7     INSERT INTO t VALUES (a);
    8     SELECT s1 * a FROM t WHERE s1 >= b;  
    9 END; // 

      在过程中定义的变量并不是真正的定义,只是在BEGIN/END块内定义而已(类似形参数).注意与会话变量的区别,不能使用@.变量一旦声明,就可以在任何能使用会话变量,文字,列表的地方使用变量

    2. 无初始化子句及SET初始化:

    1 CREATE PROCEDURE p9 ()
    2 BEGIN
    3     DECLARE a INT /* there is no DEFAULT clause */;
    4     DECLARE b INT /* there is no DEFAULT clause */;
    5     SET a = 5;    /* there is a SET statement */    
    6     SET b = 5;    /* there is a SET statement */    
    7     INSERT INTO t VALUES (a);     
    8     SELECT s1 * a FROM t WHERE s1 >= b;  
    9 END; // 

      有很多变量的方法,如果没有设置默认值,则变量为NULL,可以在任何时候使用SET语句给变量赋值.

    3. 含有DEFAULT子句的例子:

      可以用DEFAULT子句在声明的同时指定初始值

    1 CREATE PROCEDURE p10 ()
    2 BEGIN
    3     DECLARE a, b INT DEFAULT 5; 
    4     INSERT INTO t VALUES (a);
    5     SELECT s1 * a FROM t WHERE s1 >= b;
    6 END; // 

    4. Scope 作用域

    1 CREATE PROCEDURE p11 ()
    2 BEGIN
    3     DECLARE x1 CHAR(5) DEFAULT 'outer';
    4     BEGIN
    5         DECLARE x1 CHAR(5) DEFAULT 'inner';
    6         SELECT x1;
    7     END;
    8     SELECT x1;
    9 END; //

      关于作用域,上例中有嵌套的BEGIN/END块,内外两个块都有一个名为x1.内部的变量在其作用域内享有更高的优先权.执行到内部END,内部变量消失.因此,在过程外也不能使用这个声明了的变量.

  • 相关阅读:
    换博客啦
    how2heap学习(二)
    hitcontraining_uaf && hacknote
    WHUCTF PWN题目
    记一次AWD
    how2heap学习(一)
    pwnable_start & ciscn_2019_es_2 & ez_pz_hackover_2016 & pwn2_sctf_2016
    pwnable_start (内联汇编)
    2020年5月计划
    一道逆向出题笔记
  • 原文地址:https://www.cnblogs.com/free-coder/p/4774336.html
Copyright © 2020-2023  润新知