Multiply two host variables in embedded SQL for PostgreSQL

297 Views Asked by At

I have problem multiplying two host variables in embedded SQL for PostgreSQL. The SQL-query is big but I have cut out the part that doesn't work.

Declaration:

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

Code:

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

The compilation works but I get the following error message at execution:

Errcode: -400

Errmsg: operator is not unique: unknown * unknown on line 1394

If I change the code to

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

or

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

or

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

it works.

Is it possible to multiply two host variables? If not, is there any workaround? The last code example above works but I would like a solution that is not as ugly.

1

There are 1 best solutions below

0
On BEST ANSWER

Try casting to integer:

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

The error

operator is not unique...

can mostly be fixed by casting to the expected type