Есть ли какая-либо функция Oracle, указывающая на существование записи или любой другой полезной техники для достижения этой цели?UPDATE запись, если присутствует; else INSERT в Oracle
EDIT: с помощью оператора MERGE я сделал:
MERGE
INTO lims_min.mytab src
USING lims_min.mytab tgt
ON ( src.col1 = tgt.col1
AND tgt.col1 = p_val1
AND src.col2 = tgt.col2
AND tgt.col2 = p_val2
)
WHEN MATCHED
THEN
UPDATE
SET tgt.col3=p_val3,
tgt.col4=p_val4
WHEN NOT MATCHED
THEN
INSERT (col1, col2, col3, col4)
VALUES (val1, val2, val2, val4);
Я получаю ошибку о том, что col3 недействителен идентификатор. Нет опечаток, и в нем есть column.p_val1, p_val2, p_val3 и p_val4 - это строковые параметры, которые передаются в хранимую процедуру. Я думаю, что проблема может заключаться в этих параметрах, возможно, они должны быть помещены в инструкцию WHERE? Любые идеи?
Oracle 10, я получил "PL/SQL: ORA-00904: "P COL3"." ": Недопустимый идентификатор" – sarsnake
я думаю, что вам нужно to: «MERGE INTO tgt» (не src) - переключите их; и я не думаю, что вам нужно присоединиться к вашим таблицам src & tgt - просто укажите: ON (src.col1 = p_val1 и src.col2 = p_val2) – Gerrat
ничего себе, хороший Gerrat! Спасибо. Pretty sneaky – sarsnake