Rumah >pangkalan data >tutorial mysql >Pembolehubah MySQL: Apakah Perbezaan Antara `@pembolehubah` dan Pembolehubah Prosedur?

Pembolehubah MySQL: Apakah Perbezaan Antara `@pembolehubah` dan Pembolehubah Prosedur?

Patricia Arquette
Patricia Arquetteasal
2025-01-21 13:46:09632semak imbas

MySQL Variables: What's the Difference Between `@variables` and Procedure Variables?

Pembolehubah Ditakrifkan Pengguna MySQL: @pembolehubah lwn. Pembolehubah Prosedur

MySQL menawarkan pembolehubah yang ditentukan pengguna, dilambangkan dengan simbol @ terkemuka (cth., @myVar). Ini @variables adalah skop sesi; ia dimulakan dalam sesi dan berterusan sehingga sesi tamat. Yang penting, ia berbeza daripada pembolehubah prosedur.

Tidak seperti @variables, pembolehubah prosedur adalah setempat kepada prosedur tersimpan. Setiap kali prosedur dipanggil, pembolehubah setempatnya dimulakan semula kepada NULL. Ini berbeza dengan ketara dengan @variables, yang mengekalkan nilainya merentas berbilang panggilan prosedur dalam sesi yang sama. Mengubah suai @variable di dalam prosedur mempengaruhi nilainya untuk panggilan berikutnya dalam sesi itu.

Ia juga penting untuk membezakan kedua-dua @variables dan pembolehubah prosedur daripada pembolehubah sistem MySQL. Pembolehubah sistem sama ada global (cth., @@global.port) atau berskop sesi (cth., @@session.sql_mode). Pembolehubah sistem sesi, manakala khusus sesi, berkelakuan berbeza daripada @variables.

Mari kita gambarkan perbezaannya:

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE myProcVar INT DEFAULT 1;
    SET myProcVar = myProcVar + 1;
    SET @myUserVar = @myUserVar + 1;
    SELECT myProcVar, @myUserVar;
END;

SET @myUserVar = 1;

CALL prc_test();
CALL prc_test();
CALL prc_test();</code>

Output akan menunjukkan:

<code>myProcVar  @myUserVar
---------  ----------
2           2
2           3
2           4</code>

Perhatikan bahawa myProcVar (pembolehubah prosedur) ditetapkan semula kepada 2 dengan setiap panggilan, manakala @myUserVar (pembolehubah yang ditentukan pengguna) meningkat secara kumulatif, mengekalkan nilainya merentas panggilan.

Pemahaman ini penting untuk menggunakan pembolehubah MySQL dengan berkesan. @variables mengurus data sesi, pembolehubah prosedur mengendalikan keadaan prosedur setempat dan pembolehubah sistem mengawal persekitaran pangkalan data.

Atas ialah kandungan terperinci Pembolehubah MySQL: Apakah Perbezaan Antara `@pembolehubah` dan Pembolehubah Prosedur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn