2012-02-06 37 views
5

當我創建使用在mysql中設置用戶定義變量返回null?

SET @a =10; 

用戶定義的變量也我檢查

SET @a := 10; 

成功執行上述查詢。當訪問變量時,它給我的值爲NULL而不是10。我訪問使用此查詢

SELECT @a; 
+1

適合我。您使用的是哪個版本的MySQL?你在哪裏執行查詢? – Naltharial 2012-02-06 12:05:00

+0

使用後一種語法:SET @a:= 10;它只適用於我。變量綁定到tcp連接,您是否在同一會話期間嘗試所有內容? – Evert 2012-02-06 12:06:11

+1

您應該在同一個會話中設置並訪問用戶變量。 ... SET @ a = 10和SET @a:= 10是相等的。 – Devart 2012-02-06 12:07:01

回答

1

的唯一方法會發生這種情況(在客戶端會話)的定義的變量 - 和它發生,我不時的方式 - 是你通過一個短超時得到位上客戶端連接。它是這樣的:

mysql> set @a = 10; 

mysql> [wait for N+1 minutes, where N is the client timeout] 

mysql> select @a; 
+------+ 
| NULL | 
+------+ 
| NULL | 
+------+ 
1 row in set (0.00 sec) 

你必須初始化你的變量,並在連續的客戶端會話中使用它們。當會話消失時,你會失去所有的變量。

其他解釋,正如其他人在評論中指出的那樣,命令是從不同的連接點擊服務器;您的問題可能不是超時,但是您在不同的連接中發起「SET ...」和「SELECT ...」命令。用戶變量不會在不同的連接中共享。