2013-03-22 24 views
5

Se si dichiara una variabile in MySQL come:Qual è la differenza tra variabile e @variable in MySQL

declare prev_year int; 

Sono set prev_year = 100; e set @prev_year = 100; lo stesso?

Qual è la differenza in quanto sembrano comportarsi come variabili diverse?

+0

+1 per i duplicati - dovrebbe essere controllato prima di digitare una risposta – Steve

risposta

3

No, non sono proprio uguali ... ma potrebbero essere visti come gli stessi a seconda del contesto utilizzato.

Spiegherò. MySQL ha variabili di sessione, queste sono le variabili che si assegnano dal vivo fino al termine della sessione (si pensi a una variabile di connessione). Queste variabili sono dichiarate con un simbolo @. Così si potrebbe eseguire queste due affermazioni e funzionerà:

SET @myId := 123; 

SELECT * FROM table 
WHERE id = @myId; 

Quando si crea stored procedure e si utilizza dichiarare le variabili sono nel campo di applicazione di tale procedura, ad esempio

DECLARE myId INT; 

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

in quale scenario sono gli stessi? – SparKot

+0

Mi spiace di non averlo chiarito, è possibile utilizzare una variabile di sessione all'interno di una procedura memorizzata, il che significherebbe apparire uguali anche se le variabili di sessione durerebbero fino alla fine della sessione. – Steve

Problemi correlati