在 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中文网其他相关文章!