我的存储过程中的选择计数有问题,看起来当我使用两个动态参数时它拒绝工作。
例如:
1.
SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE UDA10 = 3;
完美运行
2.
SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE UDA10 = @vlQuota
同样有效
3.
SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE @llQuota = 3;
不起作用(总是返回 0)
(我想要的那个)
SELECT COUNT(*) INTO @var FROM TMP_TABLE WHERE @llQuota = @vlQuota;
不起作用(总是返回 0)
所以问题可能出在 @llQuota 参数上,但当我检查它时,它会返回“UDA10”,这是应该的。
我也尝试使用 PREPARE 和 EXECUTE 执行查询,但我遇到了同样的问题。
编辑:UDA10 是我放在示例中的一个列,它可以是我使用 @llQuota 而不是直接使用 UDA10 的任何原因。问题可能是MySQL不理解@llQuota是一个列。
最佳答案
试试这个:-
SELECT COUNT(*)
INTO @var
FROM TMP_TABLE
WHERE if('UDA10' = @llQuota, UDA10 = @vlQuota, 1);
在您的查询中,@llQuota 是一个字符串,因此不能将其视为一列。它表现为一个字符串。
关于mysql - where 子句中的动态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38846832/