mysql - 如何在 SQL 存储过程中打印变量?

标签 mysql sql ubuntu

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;  
select a = count(amount) from loan_user where amount=7000;
print a;
END $$

DELIMITER ;
CALL loan_check();

DROP DATABASE loan_data;
我想打印 a上面代码中的变量。但是代码返回
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a;
END' at line 5
如何解决这个问题?

最佳答案

您可以使用 OUT 变量

CREATE TABLE loan_user (
    id long,
    amount long
    );


INSERT INTO loan_user(id, amount)
values (1,7000), (2,7000), (3,5000);


CREATE PROCEDURE loan_check(OUT _answer BIGINT)
BEGIN
DECLARE a int;  
select  count(amount) into a from loan_user where amount=7000;
SET _answer =  a;
END


SET @answer := 0;
CALL loan_check(@answer);
SELECT IF(@answer = 2, 'yes',@answer)as answer
✓

✓

| answer |
| :----- |
| yes    |

db<> fiddle here *
或者干脆不要使用 INTO 或 :=

CREATE TABLE loan_user (
    id long,
    amount long
    );


INSERT INTO loan_user(id, amount)
values (1,7000), (2,7000), (3,5000);


CREATE PROCEDURE loan_check()
BEGIN
DECLARE a int;  
select  count(amount)  from loan_user where amount=7000;

END


CALL loan_check();

| count(amount) |
| ------------: |
|             2 |

✓


CREATE PROCEDURE loan_check2(_inc int)
BEGIN
DECLARE a int;  
select  IF(count(amount) = 2 , 'yes',COUNT(amount)) as answer from loan_user where amount=_inc;

END


CALL loan_check2(7000);
| answer |
| :----- |
| yes    |

✓

db<> fiddle here

关于mysql - 如何在 SQL 存储过程中打印变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68778502/

相关文章:

php - 将复选框值存储到mysql数据库

php - 如何在 Laravel 中显示注册用户数?

mysql触发器,OLD和NEW之间的文本

python - 找不到真正的 FFmpeg 安装(ffprobe 自带)

ubuntu - 如何使用 iptables 保护 docker 容器

mysql - 如果在实体中添加或删除列,则使缓存(2LD 缓存 Hibernate)无效。 (雷迪森)

sql - Arel中 "where exists"怎么办

结合 GROUP BY 和 SUM 的 SQL

sql - MySql 2行子查询

linux - gnome中获取桌面路径的方法