mysql - where 子句中的动态参数

标签 mysql sql stored-procedures

我的存储过程中的选择计数有问题,看起来当我使用两个动态参数时它拒绝工作。

例如:

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)

  1. (我想要的那个)

    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/

相关文章:

mysql - 运行此查询而不更改 sql_mode

Php mysql插入同一表id的数组键值

mysql - 如何重新排列表以获取 Mysql 中现有组合的列表?

sql - 插入语句在函数内部不起作用(PostgreSQL)

sql - 从 oracle 过程返回 Json 字符串

java - Spring 3.0实现带可选参数的存储过程调用

php - "Lost connection to MySQL server"错误,但实际发生后1小时?

sql - 关系数据库 : Is it fine to have a foreign key referencing an Associative table?

Mysql union 如何将返回的 3 行分组为单行

mysql - Jetty 9 JNDI 设置 - 未找到类 : org. eclipse.jetty.plus.jndi.Resource