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:
@variable
(khusus sesi)pembolehubah
(pembolehubah proses)特性 |
@variable (会话特定) |
variable (过程变量) |
---|---|---|
作用域 | 持续整个会话 | 每次过程调用时重新初始化 |
语法 | 以 @ 为前缀 |
没有前缀 |
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!