mysql初学者,不好意思问个挺白痴的问题。MSSQL可以用select @变量这种模式,用mysql写的存储过程select 变量就各种卡也不报错,直接写了select 0也运行不出来。求助

解决方案 »

  1.   

    支持的啊 我的可以执行出来。
    mysql的变量可以不用定义直接用
      

  2.   

    mysql> select @@server_id;
    +-------------+
    | @@server_id |
    +-------------+
    |           0 |
    +-------------+
    1 row in set (0.00 sec)mysql> set @A=100;
    Query OK, 0 rows affected (0.00 sec)mysql> select @A;
    +------+
    | @A   |
    +------+
    |  100 |
    +------+
    1 row in set (0.06 sec)
      

  3.   


    但是我在存储过程里写的如下代码。就不行了……
    set @ID_Temp=0;
    SELECT @ID_Temp=id FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT;
    select @ID_Temp;
      

  4.   

    SELECT ID TO @ID_Temp FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT;
    OR
    SELECT @ID_Temp:=id FROM `users` WHERE username=UserName_INPUT AND userpass=UserPass_INPUT;上个帖子已经说过了嘛
      

  5.   

    但是我是想知道为什么不能这样使用:MYSQL语法要求
    9.3. 用户变量
    可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。用户变量的形式为@var_name,其中变量名var_name可以由当前字符集的文字数字字符、‘.’、‘_’和‘$’组成。 默认字符集是cp1252 (Latin1)。可以用mysqld的--default-character-set选项更改字符集。参见5.10.1节,“数据和排序用字符集”。用户变量名对大小写不敏感。设置用户变量的一个途径是执行SET语句:SET @var_name = expr [, @var_name = expr] ...
    对于SET,可以使用=或:=作为分配符。分配给每个变量的expr可以为整数、实数、字符串或者NULL值。也可以用语句代替SET来为用户变量分配一个值。在这种情况下,分配符必须为:=而不能用=,因为在非SET语句中=被视为一个比较 操作符:
      

  6.   

    太感谢您了。请问这是mysql的那个手册吗?