2012-02-06 3 views
5
제가

mysql에서 SET 사용자 정의 변수가 null을 반환합니까?

SET @a =10; 

사용하여 사용자 정의 된 변수를 생성

또한 제가

SET @a := 10; 

성공적으로 실행 된 상기 검색어를 조사했다. 변수에 액세스 할 때 10 대신 NULL 값이 표시됩니다. 그리고 수시로 나에게 일어나는 방법 - -이 쿼리

SELECT @a; 
+1

나를 위해 잘 작동합니다. 어떤 MySQL 버전을 사용하고 있습니까? 쿼리를 어디에서 실행하고 있습니까? – Naltharial

+0

후자 구문 사용 : SET @a : = 10; 그것은 단지 나를 위해 작동합니다. 변수는 TCP 연결에 묶여 있습니다. 같은 세션에서 모든 것을 시도하고 있습니까? – Evert

+1

동일한 세션에서 사용자 변수를 설정하고 액세스해야합니다. ... SET @ a = 10이고 SET @a : = 10은 동일합니다. – Devart

답변

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 ..."명령을 시작한 것입니다. 사용자 변수는 여러 연결에서 공유되지 않습니다.

관련 문제