Rumah > Artikel > pangkalan data > Pembolehubah yang ditentukan pengguna vs. pembolehubah tempatan dalam 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;
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;
Kaedah kedua adalah seperti berikut:
SELECT @anyVariableName :=anyValue;
Jika anda tidak menggunakan titik bertindih (:) dalam pertanyaan SELECT, ia akan dinilai sebagai ungkapan. Hasilnya sama ada benar atau salah:
mysql> select @m=10;
Berikut ialah output:
+-------+ | @m=10 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec)
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;
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 ;
Sekarang tetapkan nilai pembolehubah yang ditentukan pengguna. Pertanyaannya adalah seperti berikut:
mysql> SET @userVariable=10; Query OK, 0 rows affected (0.00 sec)
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();
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)
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();
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)
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!