如何在存储过程中将SELECT结果一次性存入多个变量?
一次性给多个变量赋值的简洁写法
你尝试的SET @VAR1, @VAR2, @VAR3 = (SELECT PAR1, PAR2, PART3 FROM TABLE1)这种写法在MySQL里是不合法的,不过确实有更简洁的优化方式——用SELECT ... INTO语句一次性完成多变量赋值,仅需执行一次查询,效率更高:
SELECT PAR1, PAR2, PAR3 INTO @VAR1, @VAR2, @VAR3 FROM TABLE1;
关键注意事项:
- 必须保证这条
SELECT语句仅返回一行数据,若返回多行,会抛出Subquery returns more than 1 row的错误; - 如果查询无匹配结果(返回空行),所有变量会被赋值为
NULL; - 该写法适配MySQL的会话变量(@开头的用户变量)和存储过程内的局部变量(通过
DECLARE声明的变量)。
相比你原先多次执行SET的写法,这种方式只需要访问一次表,既减少了性能损耗,代码结构也更简洁直观。
内容的提问来源于stack exchange,提问作者Konu Rokurami
相关产品推荐
相关产品推荐

