在嵌入式SQL中为PostgreSQL乘以两个主变量

时间:2015-01-23 07:09:32

标签: postgresql embedded-sql ecpg

我有问题在嵌入式SQL中为PostgreSQL乘以两个主机变量。 SQL查询很大,但我已经删除了无法工作的部分。

声明:

EXEC SQL BEGIN DECLARE SECTION;
int var1;
int var2;
EXEC SQL END DECLARE SECTION;

代码:

CASE WHEN product_id = :var1 THEN :var1 * :var2
                             ELSE 0 END

编译有效,但执行时收到以下错误消息:

  

错误代码:-400

     

Errmsg:运算符不是唯一的:未知* 1394行未知

如果我将代码更改为

CASE WHEN product_id = :var1 THEN 1 * :var2
                             ELSE 0 END

CASE WHEN product_id = :var1 THEN product_id * :var2
                             ELSE 0 END

CASE WHEN product_id = :var1 THEN :var1 * (1 * :var2)
                             ELSE 0 END

它有效。

是否可以将两个主变量相乘?如果没有,是否有任何解决方法?上面的最后一个代码示例有效,但我想要一个不那么难看的解决方案。

1 个答案:

答案 0 :(得分:1)

尝试转换为整数:

CASE WHEN product_id = :var1 THEN :var1::integer * :var2::integer
                         ELSE 0 END

错误

  

运算符不是唯一的......

主要可以通过强制转换为预期类型来修复