ORA-00936: отсутствует выражение для динамических данных

У меня есть 2 запроса, который принимает данные динамически.

  1. Select cid from table1 where cNumber={{custNbr}}

Здесь {{custNbr}} происходит из файла.txt.

  1. update table2 set status='A' where customer_id=NVL({{cid}},0000)

Здесь {{customer_id}} берется из вывода шага 1.

Проблема: когда шаг 1 возвращает NULL, он фактически возвращает пустую строку '', В результате Шаг 2 переводится в -

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

Это выдает ошибку java.sql.SQLSyntaxErrorException: ORA-00936: отсутствует выражение

Как мне переписать запросы, чтобы они работали.

1 ответ

В вашем случае, вероятно, достаточно предоставить запасной вариант для результата первого запроса:

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

Это предполагает, что -1 не появляется как идентификатор клиента в таблице2. Следовательно UPDATE будет синтаксически допустимым, но обновит ноль строк.

ПРЕДОСТЕРЕЖЕНИЕ

Тем не менее, я бы сильно с подозрением относился к инструменту, который не может справиться NULL значения в качестве входных данных для запросов к базе данных. Вы можете связаться со службой поддержки DevTest по этому поводу.

Другие вопросы по тегам