@variable
sintaks di MySQL menunjukkan variabel sesi yang ditentukan pengguna. Anda dapat mengatur variabel pengguna ini di luar prosedur tersimpan, tetapi Anda juga dapat mengaturnya di dalam prosedur tersimpan, dan efeknya adalah variabel mempertahankan nilai setelah panggilan prosedur Anda kembali.
Jadi dalam contoh Anda, berikut ini juga akan melakukan hal yang sama:
CREATE PROCEDURE emp_count_2()
BEGIN
SELECT COUNT(*) INTO @empCount FROM Employee;
END
CALL emp_count_2(); /* sets @empCount as a side-effect */
SELECT @empCount;
Beberapa sesi boleh menyetel variabel pengguna dengan cara ini secara bersamaan, karena variabel pengguna dicakup dalam satu sesi, dan sesi bersamaan mungkin memiliki variabel dengan nama yang sama, tetapi dengan nilai yang berbeda.
Sintaks variabel tanpa awalan @ adalah untuk variabel lokal ke prosedur, baik parameter prosedur, atau variabel lokal lain yang dideklarasikan dengan MENYATAKAN dalam badan prosedur.
Penggunaan yang Anda miliki ini, meneruskan variabel pengguna sebagai parameter dan menetapkannya di badan prosedur, berguna jika Anda ingin memanggil prosedur beberapa kali dan menyimpan hasilnya dalam variabel pengguna yang terpisah. Jika tidak, setiap panggilan ke prosedur akan menimpa nilai sebelumnya dalam variabel pengguna @empCount untuk sesi saat ini.