Oracle错误ORA-01036:非法变量名称/编号

时间:2018-05-06 06:25:26

标签: python oracle integration

为什么我在Oracle DB中收到此错误?

cx_Oracle.DatabaseError:ORA-01036:非法变量名称/编号

cur.execute("select jobid, jobname, technology, skillset, salary, minimumexp from job where technology=:technology or int(salary)>=:int(salary) or int(minimumexp)<=int(minimumexp)",{"technology":technology,"int(salary)":int(salary),"int(minimumexp)":int(minimumexp)})

1 个答案:

答案 0 :(得分:1)

我不认为INT函数在这种情况下是有效的;至少,它在Oracle中没有任何作用。除非我错了,否则它会将 float 数字转换为整数。如果是这样,请尝试使用TRUNC函数,因为Python的INT会截断小数。

此外,您似乎在错误的地方使用了冒号(代表参数,对吗?)(应该在参数名称前面,而不是INT (或TRUNC)功能)。

例如:

No : or int(salary)   >= :int(salary)
Yes: or trunc(salary) >= trunc(:salary)