Rumah >pangkalan data >tutorial mysql >Pembolehubah Ditakrifkan Pengguna vs Pembolehubah Prosedur dalam MySQL: Apakah Perbezaannya?

Pembolehubah Ditakrifkan Pengguna vs Pembolehubah Prosedur dalam MySQL: Apakah Perbezaannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-21 14:01:10563semak imbas

User-Defined Variables vs. Procedure Variables in MySQL: What's the Difference?

Perbandingan pembolehubah yang ditentukan pengguna dan pembolehubah proses dalam MySQL

Dalam MySQL, pembolehubah yang ditentukan pengguna diisytiharkan dengan awalan @, manakala pembolehubah prosedur tidak mempunyai awalan. Perbezaan ini timbul daripada fakta bahawa pembolehubah tetapan pengguna khusus sesi mengekalkan nilainya merentas sesi, manakala pembolehubah prosedur dimulakan semula kepada NULL pada setiap panggilan prosedur.

Pembolehubah khusus sesi (@pembolehubah)

Pembolehubah takrif pengguna yang diawali dengan @ bertindak sebagai pembolehubah khusus sesi. Mereka boleh dimulakan menggunakan pernyataan SET atau dalam pertanyaan dan berterusan sehingga akhir sesi. Contohnya:

<code class="language-sql">SET @var = 1;</code>

Pembolehubah proses (pembolehubah)

Pembolehubah yang diisytiharkan dalam prosedur atau fungsi tersimpan tanpa awalan ialah pembolehubah setempat. Pembolehubah ini hanya tersedia dalam skop prosedur dan dimulakan semula kepada NULL pada setiap panggilan prosedur.

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    ...
END;</code>

Perbezaan utama

Jadual berikut meringkaskan perbezaan utama antara @ pembolehubah dan pembolehubah proses:

Ciri @variable (khusus sesi) pembolehubah (pembolehubah proses) Skop Terakhir untuk keseluruhan sesi Dimulakan semula pada setiap panggilan prosedur Sintaks Diawali dengan
特性 @variable (会话特定) variable (过程变量)
作用域 持续整个会话 每次过程调用时重新初始化
语法 @ 为前缀 没有前缀
Tiada awalan table>

Contoh

Pertimbangkan prosedur tersimpan berikut:

<code class="language-sql">CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    SET var2 = var2 + 1;
    SET @var2 = @var2 + 1;
    ...
END;</code>

Setiap kali prosedur ini dipanggil, var2 ditetapkan semula kepada 1 dan @var2 terus dinaikkan. Ini menunjukkan tingkah laku pemulaan semula pembolehubah proses dan sifat khusus sesi pembolehubah yang ditentukan pengguna.

Atas ialah kandungan terperinci Pembolehubah Ditakrifkan Pengguna vs Pembolehubah Prosedur dalam MySQL: Apakah Perbezaannya?. 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