如何在MariaDB存储过程中查询赋值且不返回结果?
解决MariaDB存储过程动态SQL赋值时返回结果的问题
在MariaDB中,SELECT @变量 := 值的写法本质是执行查询并将结果赋值给变量,同时会把变量值作为结果集返回给调用者。要只完成赋值不返回结果,只需把动态SQL改成SELECT ... INTO的赋值语法即可:
修改后的代码如下:
SET @txtSQL := CONCAT("SELECT COUNT(*)", " INTO @bintTicketsRemaining FROM `", txtTable, "` WHERE state IS NULL;"); PREPARE STMT FROM @txtSQL; EXECUTE STMT; DEALLOCATE PREPARE STMT;
原理说明
SELECT ... INTO是MariaDB专门用于将查询结果赋值给变量的语法,执行时不会生成需要返回给调用者的结果集,只会完成变量赋值操作。- 原写法中
SELECT @bintTicketsRemaining := COUNT(*)会把赋值后的@bintTicketsRemaining值作为一行一列的结果集返回,而改用INTO后就不会有这个输出。
内容的提问来源于stack exchange,提问作者SPlatten
相关产品推荐
相关产品推荐

