ORA-00936:缺少动态数据的表达式

时间:2017-05-16 20:38:57

标签: sql oracle syntax-error ora-00936

我有2个查询,它们动态获取数据。

  1. Select cid from table1 where cNumber={{custNbr}}
  2. 此处{{custNbr}}来自.txt文件。

    1. update table2 set status='A' where customer_id=NVL({{cid}},0000)
    2. 此处{{customer_id}}来自第1步的输出。

      问题 :当步骤1返回NULL时,它实际上返回一个空字符串''。因此,第2步转换为 -

      update table2 set status='A' where customer_id=NVL(,0000)
      

      抛出错误java.sql.SQLSyntaxErrorException:ORA-00936:缺少表达式

      如何重写查询以使其有效。

1 个答案:

答案 0 :(得分:0)

在您的情况下,它可能足以为第一个查询的结果提供回退:

Select nvl(cid, -1) as cid
  from table1 
  where cNumber={{custNbr}}

这假定-1不会在table2中显示为客户ID。因此,UPDATE在语法上是有效的,但它将更新零行。

CAVEAT

但是,我强烈怀疑一个无法处理NULL值作为数据库查询输入的工具。您可能想要联系DevTest支持。