Rumah > Artikel > pangkalan data > Apakah jenis pembolehubah yang ada pada prosedur tersimpan mysql?
Jenis pembolehubah prosedur disimpan mysql: 1. Pembolehubah setempat, sintaks definisi ialah "DECLARE variable name data type" 2. Pembolehubah pengguna, sintaks definisi ialah "set @variable name:=..." ; 3 , pembolehubah sistem, yang boleh dibahagikan kepada pembolehubah global "@@global" dan pembolehubah sesi "@@session".
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi mysql8.0.22, komputer Dell G3.
Pembolehubah biasa dalam prosedur tersimpan MySQL: pembolehubah tempatan, pembolehubah pengguna, pembolehubah sistem
Dalam badan proses, anda boleh mengisytiharkan pembolehubah setempat untuk menyimpan beberapa nilai buat sementara waktu.
1. Sintaks untuk mentakrifkan pembolehubah setempat:
DECLARE var_name[, var_name] ... type [DEFAULT value];
Antaranya, taip ialah jenis data MySQL, seperti: int, float, date, varchar(length)
Nota :
①DECLARE digunakan untuk mengisytiharkan pembolehubah tempatan, dan DECLARE hanya digunakan dalam BEGIN...END pernyataan kompaun, dan mesti berada di permulaan pernyataan kompaun, sebelum mana-mana pernyataan lain; digunakan dalam blok bersarang, kecuali yang mengisytiharkan pembolehubah dengan nama yang sama.
② Jika anda ingin memberikan nilai lalai untuk pembolehubah, gunakan klausa DEFAULT (nilai boleh menjadi pemalar atau dinyatakan sebagai ungkapan jika tiada klausa DEFAULT, nilai awal adalah NULL.
2. Format asas:
CREATE PROCEDURE sp_name ([proc_parameter[,...]]) BEGIN DECLARE var_name1 type [DEFAULT value]; DECLARE var_name2 type [DEFAULT value]; DECLARE……; [characteristic ...];
Contoh 1: Buat proses, nyatakan nilai lalai untuk pembolehubah setempat dan panggil proses
mysql>delimiter $$ mysql> create procedure test1(out num1 int)->begin-> declare num2 int default 100;-> set num1=num2;->end->$$ mysql>delimiter ; mysql>call test1(@num); mysql> select@num;+------+ | @num | +------+ | 100 | +------+
Penghuraian :
Buat prosedur tersimpan test1: output ialah nilai pembolehubah num1, isytiharkan pembolehubah tempatan num2 sebagai jenis int, nilai lalai ialah 100, gunakan set untuk menetapkan nilai num2 (jika tidak diproses, nilai lalai) kepada num1;
Panggil ujian1: Gunakan nombor pembolehubah pengguna untuk menerima nilai output num1 prosedur yang disimpan...
Selain nilai literal, nilai lalai juga boleh menjadi ungkapan kompleks, termasuk subkueri skalar
Contoh 2: Buat proses untuk memulakan pembolehubah dengan bilangan semua pemain
mysql>delimiter $$ mysql> create procedure test2(out num1 int)->begin-> declare num2 int default(select count(*) fromPLAYERS);-> set num1=num2;->end$$mysql>delimiter ; mysql>call test2(@num);mysql> select@num;+------+ | @num | +------+ | 14 | +------+
Nota: MySQL tidak menyokong tatasusunan sebagai pembolehubah tempatan.
3. Skop pembolehubah tempatan:
Iaitu, skop blok program di mana pembolehubah boleh digunakan secara normal tanpa ralat.
Dalam kes blok bersarang,
pembolehubah yang diisytiharkan dalam blok luar boleh digunakan terus dalam blok dalam;
pembolehubah yang diisytiharkan dalam blok dalam hanya boleh Digunakan di dalam blok.
Analisis: Pembolehubah v2 hanya boleh digunakan dalam blok dalaman b2 Penyataan set dan pernyataan set terakhir dalam blok b3 adalah salah.
> Pembolehubah pengguna berkaitan dengan sambungan pangkalan data: pembolehubah yang diisytiharkan dalam sambungan semasa akan hilang apabila sambungan diputuskan; sambungan ini tidak boleh digunakan dalam sambungan lain.
> Simbol @ mewakili pembolehubah pengguna.
1. Definisi pembolehubah pengguna (set, pilih):
1) Penyataan set memberikan nilai kepada pembolehubah pengguna:
Anda boleh menggunakan "=" atau ":=" sebagai aksara Tugasan;
Ekspr yang diberikan kepada setiap pembolehubah boleh menjadi integer, nombor nyata, rentetan atau nilai NULL
mysql> set @zjc:=999; mysql> select@zjc;+------+ | @zjc | +------+ | 999 | +------+
2 memberikan nilai kepada pembolehubah pengguna:
Pengendali tugasan mestilah ":=" dan bukannya "=", kerana = dianggap sebagai pengendali perbandingan dalam pernyataan bukan SET; >Nota:
mysql> select @abc:=123;+-----------+ | @abc:=123 | +-----------+ | 123 | +-----------+mysql> select@abc;+------+ | @abc | +------+ | 123 | +------+① Pembolehubah pengguna boleh ditakrifkan dan digunakan di mana-mana sahaja ia boleh digunakan secara langsung jika tidak ditakrifkan (nilai lalai kepada nol). ②Format nama pembolehubah pembolehubah pengguna: @var_name, dengan simbol @. ③Penyalahgunaan pembolehubah pengguna akan menjadikan program sukar difahami dan diurus. Penugasan pembolehubah lanjutan: tetapkan sintaksPembolehubah dalam MySQL tidak mengehadkan jenis data dengan ketat Jenis data pembolehubah berubah pada bila-bila masa mengikut nilai yang diberikan kepada pembolehubah.
## digunakan untuk memberikan nilai kepada pembolehubah pengguna, pembolehubah sistem dan juga boleh memberikan nilai kepada pembolehubah tempatan dalam proses.
SET variable_assignment [, variable_assignment] ... variable_assignment: user_var_name=expr|[GLOBAL | SESSION] system_var_name =expr|[@@global. | @@session. | @@] system_var_name = exprNota: Apabila menetapkan pembolehubah sistem, tiada pengubahsuaian skop, dan lalai merujuk kepada skop sesi; (Nota khas, sesetengah pembolehubah sistem tidak mempunyai pengubahsuaian skop , tidak boleh ditetapkan, jadi sebaiknya tetapkan pembolehubah sistem dengan skop). 2. Skop pembolehubah pengguna Selagi pembolehubah pengguna yang ditakrifkan dalam sambungan semasa digunakan dalam sambungan semasa, ia adalah OK, tetapi tidak ada yang lain. 3. Perbezaan daripada pembolehubah tempatan: Pembolehubah setempat hanya mempunyai nama pembolehubah dan tiada nama pembolehubah pengguna mempunyai simbol @ di hadapannya. ditakrifkan dahulu dan kemudian digunakan; untuk pembolehubah tidak ditentukan, nilai pilih adalah kosong. Pembolehubah setempat hanya digunakan di dalam prosedur tersimpan dan tidak mempunyai makna di luar prosedur Apabila blok permulaan diproses, pembolehubah tempatan hilang manakala pembolehubah pengguna boleh digunakan di dalam dan di luar prosedur tersimpan. Petua: Di dalam prosedur tersimpan, gunakan pembolehubah tempatan dan bukannya pembolehubah pengguna.
3. Pembolehubah pengguna dan pembolehubah sistem pembolehubah MySQL
1 Pembolehubah pengguna adalah seperti yang dinyatakan di atas @var_name (simbol @)Pembolehubah Mysql adalah serupa dengan bahasa dinamik, dan nilai pembolehubah berubah mengikut jenis nilai yang akan diberikan.
2. Pembolehubah sistem: Mengikut skop pembolehubah sistem, ia dibahagikan kepada: pembolehubah global dan pembolehubah sesi (dua @ simbol)
①Pembolehubah global (@@global.)
Apabila MySQL bermula, pelayan secara automatik memulakan pembolehubah global kepada nilai lalai
Nilai lalai pembolehubah global boleh ditukar dengan menukar fail konfigurasi MySQL (my.ini, my.cnf) .
②Pembolehubah sesi (@@session.)
Setiap kali sambungan baharu diwujudkan, ia dimulakan oleh MySQL
MYSQL akan menyimpan semua pembolehubah global semasa Buat salinan daripada nilai sebagai pembolehubah sesi (iaitu, jika nilai pembolehubah sesi dan pembolehubah global tidak diubah secara manual selepas sesi ditubuhkan, nilai semua pembolehubah ini akan sama).
#Perbezaan antara pembolehubah global dan pembolehubah sesi: Pengubahsuaian kepada pembolehubah global akan mempengaruhi keseluruhan pelayan, tetapi pengubahsuaian pada pembolehubah sesi hanya akan menjejaskan sesi semasa.
Pembelajaran yang disyorkan: tutorial video mysql
Atas ialah kandungan terperinci Apakah jenis pembolehubah yang ada pada prosedur tersimpan mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!