手册上说, set是设置的参考变量可能是子程序内声明的变量,或者是全局服务器变量。但看到有 set @x = 1, @strSql = ... 的东西?  @x . @strSql 这些从那来?  看不到有定义 ?

解决方案 »

  1.   

    这些是用户自定义变量
    mysql> select @@DELAY_KEY_WRITE;
    +-------------------+
    | @@DELAY_KEY_WRITE |
    +-------------------+
    | ON                |
    +-------------------+
    1 row in set (0.00 sec)mysql> set @x=1;
    Query OK, 0 rows affected (0.03 sec)mysql> select @x;
    +------+
    | @x   |
    +------+
    |    1 |
    +------+
    1 row in set (0.01 sec)
    查看系统变量
    mysql> show variables;
    mysql> set @@unique_checks=0;
    Query OK, 0 rows affected (0.00 sec)mysql> select  @@unique_checks;
    +-----------------+
    | @@unique_checks |
    +-----------------+
    |               0 |
    +-----------------+
    1 row in set (0.00 sec)
      

  2.   

    不需要定义 @ 变量, 这是SESSION级的变量,直接用即可。
      

  3.   

    带@是用户变量,在用户会话里有效,不同会话可以用相同的名称,但值相互不会冲突,不用定义,直接引用就可以了。@@为系统变量,可以用show variables来查看,有全局与会话2种之分,如:
    mysql> select @@session.tmp_table_size;
    +--------------------------+
    | @@session.tmp_table_size |
    +--------------------------+
    |                 53477376 |
    +--------------------------+
    1 row in set (0.00 sec)mysql> select @@global.tmp_table_size;
    +-------------------------+
    | @@global.tmp_table_size |
    +-------------------------+
    |                53477376 |
    +-------------------------+
    1 row in set (0.02 sec)mysql>
      

  4.   

    怎么为叫SESSION级的变量, 请教?
      

  5.   

    就是只在当前会话(session)中有效,别的会话访问不到
      

  6.   

    global
    session 
    status
    自定义mysql有上述集中变量