Получение неверного идентификатора SQL-запроса - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь выполнить следующий запрос:

MERGE INTO NOTIFICATION_OBJS p
  USING (SELECT 
   :fcsNotif_id as doc_id,
   :OKPD2_code as OKPD2_code,
   :OKPD2_name as OKPD2_name,
   :quantity_value as quantity, 
   :purchaseObject_price as price 
   FROM DUAL
  ) v
  ON (p.doc_id=v.doc_id)
  WHEN  MATCHED THEN
    UPDATE SET 
      p.OKPD2_code = v.OKPD2_code,
      p.OKPD2_name = v.OKPD2_name,
      p.quantity_value = v.quantity_value,
      p.price = v.price

  WHEN NOT MATCHED THEN
    INSERT (p.doc_id, p.OKPD2_code, p.OKPD2_name, p.quantity_value, p.price)
    VALUES(v.doc_id, v.OKPD2_code, v.OKPD2_name, v.quantity_value, v.price)

Я отправляю в метод привязки следующий словарь:

{'OKPD2_code': '62.02.30.000', 'OKPD2_name': 'some text', 'purchaseObject_price': '20466982.25', 'quantity_value': '1', 'fcsNotif_id': '18941152'}

enter image description here

Но я получаю ошибку:

ORA-00904: "P"."OKPD2_NAME": invalid identifier

Все остальные запросы с привязкой работают.Пожалуйста, помогите мне найти ошибку.

1 Ответ

0 голосов
/ 07 февраля 2019

В таблице NOTIFICATION_OBJS нет столбца OKPD2_NAME.

Если вы использовали двойные кавычки при создании этой таблицы (и ее столбцов), вам следует

  • воссоздать таблицубез двойных кавычек или
  • ссылаются на таблицу (и ее столбцы, которые используют смешанный регистр), снова используя двойные кавычки, указав регистр точно, как это было при создании таблицы

[РЕДАКТИРОВАТЬ, после загрузки снимка экрана]

Имя столбца действительно создается с использованием смешанного регистра, поэтому вам придется ссылаться на него в точности так: "OKPD2_name" обращая внимание на двойные кавычки и смешанныйдело.

Если вы используете "okpd2_name" или "okPD2_NAME" или что-нибудь кроме "OKPD2_name", это не будет работать.Еще раз: избавьтесь от двойных кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...