У меня есть таблица со следующими столбцами: идентификатор, имя, возраст, адрес.
Я хочу сделать UPSERT SP на Хану, которая может:
Вставьте новую строку.
Обновление различные столбцы при каждом вызове 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 с подзапросом, и он не работал).