Rumah > pangkalan data > tutorial mysql > Pembolehubah yang ditentukan pengguna vs. pembolehubah tempatan dalam MySQL?

Pembolehubah yang ditentukan pengguna vs. pembolehubah tempatan dalam MySQL?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-09-06 21:05:06
ke hadapan
1637 orang telah melayarinya

MySQL 中的用户定义变量与局部变量?

Pembolehubah takrif pengguna juga dikenali sebagai pembolehubah khusus sesi. Ia ialah pembolehubah yang ditaip longgar yang boleh dimulakan di suatu tempat dalam sesi dan mengandungi nilai pembolehubah yang ditentukan pengguna sehingga akhir sesi.

Pembolehubah takrif pengguna diawali dengan simbol @. Contohnya:

@anyVariableName;
Salin selepas log masuk

Terdapat dua cara untuk memulakan pembolehubah yang ditentukan pengguna. Anda boleh menggunakan arahan SET atau gunakan pertanyaan SELECT. Kaedah pertama adalah seperti berikut:

SET @anyVariableName=anyValue;
Salin selepas log masuk

Kaedah kedua adalah seperti berikut:

SELECT @anyVariableName :=anyValue;
Salin selepas log masuk

Jika anda tidak menggunakan titik bertindih (:) dalam pertanyaan SELECT, ia akan dinilai sebagai ungkapan. Hasilnya sama ada benar atau salah:

mysql> select @m=10;
Salin selepas log masuk

Berikut ialah output:

+-------+
| @m=10 |
+-------+
|     1 |
+-------+
1 row in set (0.00 sec)
Salin selepas log masuk

Pembolehubah setempat boleh digunakan dalam prosedur tersimpan, fungsi, dsb., bersama-sama dengan kata kunci DECLARE. Tiada awalan @ diperlukan seperti pembolehubah yang ditentukan pengguna.

Sintaks pembolehubah tempatan adalah seperti berikut.

DECLARE yourVariableName dataType;
Salin selepas log masuk

NOTA: Perbezaan utama antara pembolehubah tempatan dan pembolehubah yang ditentukan pengguna ialah pembolehubah tempatan dimulakan semula dengan nilai NULL setiap kali prosedur tersimpan dipanggil, manakala pembolehubah khusus sesi atau pembolehubah yang ditentukan pengguna tidak . Tidak dimulakan semula dengan NULL. Pembolehubah yang ditentukan pengguna yang ditetapkan oleh seorang pengguna tidak dapat dilihat oleh pengguna lain. Sebarang pembolehubah sesi untuk pengguna tertentu dimusnahkan secara automatik apabila pengguna keluar.

Berikut ialah demonstrasi pembolehubah khusus sesi dan pembolehubah setempat dengan prosedur tersimpan. Pertanyaan untuk mencipta prosedur tersimpan dengan pembolehubah tempatan dan pembolehubah yang ditentukan pengguna adalah seperti berikut:

mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_LocalAndUserDefinedVariableDemo()
   -> BEGIN
   -> DECLARE localVariable int default 10;
   -> SET localVariable=localVariable+10;  
   -> SET @userVariable=@userVariable+10;
   -> SELECT localVariable;
   -> SELECT @userVariable;
   -> END;
   -> //
Query OK, 0 rows affected (0.39 sec)
mysql> DELIMITER ;
Salin selepas log masuk

Sekarang tetapkan nilai pembolehubah yang ditentukan pengguna. Pertanyaannya adalah seperti berikut:

mysql> SET @userVariable=10;
Query OK, 0 rows affected (0.00 sec)
Salin selepas log masuk

Sekarang hubungi prosedur tersimpan. Apabila dipanggil buat kali pertama, pembolehubah yang ditentukan pengguna ialah 10+10=20 dan pembolehubah tempatan ialah 10+10=20.

Panggil prosedur tersimpan menggunakan arahan panggilan:

mysql> CALL sp_LocalAndUserDefinedVariableDemo();
Salin selepas log masuk
Salin selepas log masuk

Berikut ialah output:

+---------------+
| localVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.32 sec)
+---------------+
| @userVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.34 sec)
Query OK, 0 rows affected (0.36 sec)
Salin selepas log masuk

Dalam panggilan kedua, pembolehubah yang ditentukan pengguna akan memegang nilai 20 dan menambah 10 seperti 20+10=30, manakala tempatan pembolehubah digunakan sekali lagi 10 memulakan semula dan menambah 10, seperti 10+10=20.

Panggil prosedur tersimpan dan semak output sampel:

mysql> CALL sp_LocalAndUserDefinedVariableDemo();
Salin selepas log masuk
Salin selepas log masuk

Di bawah ialah output:

+---------------+
| localVariable |
+---------------+
|            20 |
+---------------+
1 row in set (0.00 sec)
+---------------+
| @userVariable |
+---------------+
|            30 |
+---------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.02 sec)
Salin selepas log masuk

Dalam panggilan ketiga pembolehubah yang ditentukan pengguna akan memegang nilai 30 dan menambah 10 seperti 30+10=40 dan pembolehubah tempatan sekali lagi Mulakan semula dengan 10 dan tambah 10, seperti 10+10=20.

Kini anda boleh mengatakan bahawa dalam setiap panggilan prosedur pembolehubah tempatan dimulakan semula dengan beberapa nilai yang mungkin NULL atau sesuatu yang lain seperti dalam kes saya, saya memberikan nilai lalai 10. Ini bermakna ia menetapkan pembolehubah tempatan kepada nilai 10 pada setiap panggilan prosedur, manakala pembolehubah yang ditentukan pengguna tidak.

Atas ialah kandungan terperinci Pembolehubah yang ditentukan pengguna vs. pembolehubah tempatan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan