2012-02-06 16 views
5

Kiedy stworzył użytkownika zdefiniowaną zmienną korzystającSET zmienna zdefiniowana przez użytkownika w mysql return null?

SET @a =10; 

również Sprawdziłem

SET @a := 10; 

powyższe zapytanie wykonana pomyślnie. podczas uzyskiwania dostępu do zmiennej daje mi ona wartość NULL zamiast 10. I obejrzano zdefiniowanych zmiennych za pomocą tej kwerendy

SELECT @a; 
+1

Działa dobrze dla mnie. Którą wersję MySQL używasz? Gdzie wykonujesz zapytania? – Naltharial

+0

Używanie tej ostatniej składni: SET @a: = 10; to po prostu działa dla mnie. Zmienne są powiązane z połączeniem TCP, czy próbujesz wszystkiego podczas tej samej sesji? – Evert

+1

Powinieneś ustawić i uzyskać dostęp do zmiennej użytkownika w tej samej sesji. ... SET @ a = 10 i SET @a: = 10 są równe. – Devart

Odpowiedz

1

Jedyny sposób to może się zdarzyć (w sesji klienta) - i tak to się dzieje dla mnie od czasu do czasu - jest dostać trochę za krótki czas oczekiwania na połączenie klienta. To jest tak:

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) 

Należy zainicjować zmienne i używać ich w ramach ciągłej sesji klienta. Kiedy sesja zniknie, tracisz wszystkie zmienne.

Innym wyjaśnieniem, jak zauważyli inni w komentarzach, jest to, że polecenia trafiają na serwer z różnych połączeń; Twój problem może nie być limitem czasu, ale pochodzi z komend "USTAW ..." i "WYBIERZ ..." w różnych połączeniach. Zmienne użytkownika nie są udostępniane dla różnych połączeń.

Powiązane problemy