在 MySQL 中,不可能在預存程序外部宣告變數並使用 while 迴圈。這是因為這些建構必須在 BEGIN...END 子句中聲明,該子句僅在預存程序、函數、觸發器和事件中可用。
克服限制
如果您需要在預存程序之外聲明變數並使用 while 循環,您可以建立封裝此功能的暫存程序。您可以遵循以下範本:
<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>
用法
要執行臨時儲存程序並存取聲明的變量,您可以使用以下步驟:
執行預存程序:
<code class="sql">CALL my_temp_proc();</code>
使用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>
以上是MySQL 可以在預存程序之外宣告變數並使用 While 迴圈嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!