UPSERT SP на хане, который может: 1. вставить новый ряд.2. обновлять * разные столбцы * при каждом вызове sp - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть таблица со следующими столбцами: идентификатор, имя, возраст, адрес.

Я хочу сделать UPSERT SP на Хану, которая может:

  1. Вставьте новую строку.

  2. Обновление различные столбцы при каждом вызове sp.

SP выглядит следующим образом:

PROCEDURE UPSERT_SP (

   ID varchar(10),

   NAME varchar(20),

   AGE int,

   ADDRESS varchar(50)

)

BEGIN

UPSERT "MT_TABLE" AS MT

VALUES (
  :ID,

  IFNULL(:NAME,    MT."NAME"),

  IFNULL(:AGE,     MT."AGE"),

  IFNULL(:ADDRESS, MT."ADDRESS")

)

WHERE MT."GUID" = :GUID;

END;

Теперь, если я позвоню своему SP, я хочу, чтобы это произошло:

  • CALL UPSERT_SP ('new_id', 'new_name', 55, 'new_address')- 'new_id' не существует в таблице, поэтому будет создана новая строка.

  • CALL UPSERT_SP ('new_id', null, 100, null) - существует 'new_id'в таблице, поэтому строка «new_id» будет обновлять только столбец AGE, потому что два других (имя, адрес) являются «нулевыми».

Я знаю, что sp, который я написал, работаетв SQL Server Manager, но по какой-то причине SAP HANA не позволяет мне сделать это.При попытке активировать sp я получаю следующую ошибку:

столбец не разрешен: MT.NAME

Как получить результат, которого я пытаюсь достичь(Я уже пробовал UPSERT с подзапросом, и он не работал).

...