如何在MySQL存储过程中打印变量?报1064语法错误该如何修复
MySQL存储过程打印自定义变量报错修复方案
错误原因
你遇到的1064语法错误以及变量赋值错误,来自两个错误写法:
- MySQL原生没有
PRINT语法,print a;不符合MySQL语法规范,是报错的直接诱因 - 你写的
select a = count(amount) from loan_user where amount=7000;是判断a和统计结果是否相等的布尔运算,不是赋值操作,不会把统计结果写入变量a
修复方法
- 变量赋值改用
SELECT 统计结果 INTO 变量名的语法,把count的结果写入局部变量a - 输出变量直接用
SELECT 变量名的方式实现打印效果,也可以拼接自定义提示文本提升可读性
完整可运行修复后代码
CREATE DATABASE loan_data; USE loan_data; CREATE TABLE loan_user ( id long, amount long ); INSERT INTO loan_user(id, amount) VALUES (1,7000), (2,7000), (3,5000); DELIMITER $$ CREATE PROCEDURE loan_check() BEGIN DECLARE a INT; -- 修正赋值逻辑,把统计结果写入变量a SELECT COUNT(amount) INTO a FROM loan_user WHERE amount=7000; -- 用SELECT替代PRINT输出变量值 SELECT a AS amount等于7000的记录数; END $$ DELIMITER ; CALL loan_check(); DROP DATABASE loan_data;
运行效果
调用CALL loan_check();后会返回一行结果,输出值为2,和实际测试数据中符合条件的记录数一致。
内容的提问来源于stack exchange,提问作者Pradeep Kumar Jha
相关产品推荐
相关产品推荐

