Dalam MySQL, tidak mungkin untuk mengisytiharkan pembolehubah dan menggunakan gelung sementara di luar prosedur tersimpan. Ini kerana binaan ini mesti diisytiharkan dalam klausa BEGIN...END, yang hanya tersedia di dalam prosedur, fungsi, pencetus dan peristiwa yang disimpan.
Mengatasi Had
Jika anda perlu mengisytiharkan pembolehubah dan menggunakan gelung sementara di luar prosedur tersimpan, anda boleh membuat prosedur tersimpan sementara yang merangkumi fungsi ini. Berikut ialah templat yang boleh anda ikuti:
<code class="sql">CREATE TEMPORARY PROCEDURE my_temp_proc() BEGIN DECLARE var1 INT; DECLARE var2 VARCHAR(255); WHILE var1 < 10 DO SET var2 = CONCAT(var2, 'Iteration ', var1, '\n'); SET var1 = var1 + 1; END WHILE; END</code>
Penggunaan
Untuk melaksanakan prosedur tersimpan sementara dan mengakses pembolehubah yang diisytiharkan, anda boleh menggunakan langkah berikut:
Laksanakan prosedur tersimpan:
<code class="sql">CALL my_temp_proc();</code>
Soal pembolehubah yang diisytiharkan menggunakan jadual INFORMATION_SCHEMA.ROUTINE_VARIABLES:
<code class="sql">SELECT ROUTINE_NAME, VARIABLE_NAME, VARIABLE_TYPE, VARIABLE_VALUE FROM INFORMATION_SCHEMA.ROUTINE_VARIABLES WHERE ROUTINE_NAME = 'my_temp_proc';</code>
Ini akan mengeluarkan nilai pembolehubah yang diisytiharkan.
Atas ialah kandungan terperinci Bolehkah MySQL Mengisytiharkan Pembolehubah dan Penggunaan Semasa Gelung di Luar Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!