2013-03-22 48 views
5

變量和@Variable之間的區別。如果我們在MySQL變量聲明爲:是什麼在MySQL

declare prev_year int; 

set prev_year = 100;set @prev_year = 100;一樣嗎?

有什麼區別,因爲它們看起來像不同的變量?

+0

+1的重複 - 應該在輸入回答 – Steve 2013-03-22 09:44:35

回答

3

不,它們並不是真的一樣......但根據所使用的上下文,它們可以被視爲相同。

我會解釋一下。 MySQL具有會話變量,這些是您分配的變量,直到會話結束(想到連接變量)爲止。這些變量用@符號聲明。所以,你可以執行這兩個語句,它會工作:

SET @myId := 123; 

SELECT * FROM table 
WHERE id = @myId; 

當您創建存儲過程和使用聲明變量是在程序的範圍,如

DECLARE myId INT; 

SELECT id INTO myId FROM table 
WHERE name = 'steve'; 
+0

之前檢查過他們是什麼情況? – SparKot 2013-03-22 10:17:21

+0

對不起,我沒有說清楚,你可以在存儲過程中使用會話變量,這意味着它們看起來是相同的,儘管會話變量會持續到會話結束。 – Steve 2013-03-22 10:35:26