mysql - 存储过程返回空值

标签 mysql stored-procedures parameters declare

我正在制作一个存储过程,根据一个人每月的总交易量提供现金返还,但调用时它显示现金返还为空值

CREATE DEFINER=`root`@`localhost` PROCEDURE `stored_procedure_cashback`(IN a INT, IN b INT)
BEGIN
DECLARE cashback_get INT;
DECLARE total INT;
SELECT customers.`id_customers`, customers.`customers_name`, MONTH(transaction.`transaction_date`) AS month, 
YEAR(transaction.`transaction_date`) AS year, 
SUM((transaction_detail.`ammount`*transaction_detail.`price_per_piece`)-transaction_detail.`discount`) AS total,
cashback_get
FROM transaction_detail
INNER JOIN transaction ON transaction_detail.`id_transaction`=transaction.`id_transaction`
INNER JOIN customers ON transaction.`id_customers`=customers.`id_customers`
WHERE MONTH(transaction.`transaction_date`) = a AND YEAR(transaction.`transaction_date`) = b
GROUP BY customers.`id_customers`;

IF (total >= 20000) THEN
	SET cashback_get = 2000;
ELSE 
	SET cashback_get = 0;
END IF;

最佳答案

您错误地将结果作为 OUT 参数。

CREATE DEFINER=`root`@`localhost` PROCEDURE. 
`stored_procedure_cashback`(IN a INT, IN b INT, OUT cashback_get INT)
 BEGIN

 DECLARE total INT;
 SELECT Sum( etc etc) into total
  From table 
  etc etc

  IF  total >= 20000 Then
         SET cashback_get = 2000;
   ELSE 
     SET cashback_get = 0;
   END IF;

END;

关于mysql - 存储过程返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49547322/

相关文章:

Mysql选择同一行的数据

python - 让 SQL 引擎做约束检查或执行查询以预先检查约束

java - Java中按日期(月)排序的SQL语句

sql-server - 使用同义词跨数据库共享存储过程

java - 使用存储过程中存储 View

postgresql - 带有空参数的 JPA NamedQuery

c# - 包含函数和可选参数的字典

C# WPF 在不知道列的情况下将数据网格列大小设置为自动

sql - 如何使用动态 SQL 查询结果创建临时表

c++ - 如何在 C++ 中将动态二维字符串数组作为参数传递