как запустить функцию вставки или обновления при конфликте таблицы для PostgreSQL - PullRequest
0 голосов
/ 08 октября 2019

Я хочу вставить и обновить одну таблицу из другой, используя функцию обновления при конфликте.

Я попытался выполнить функцию, и ни одна из них не сработала.

создать или заменить FUNCTION ecisdrdm.pr_mig_stg_application_cdim (v_Ret OUT bigint) как $$ декларировать v_ErrorCode bigint;v_ErrorMsg varchar (512);v_Module varchar (32) = 'pr_mig_stg_application_cdim';

begin


- MERGING: STG_APPLICATION_CDIM в APPLICATION_CDIM

INSERT INTO propp application_cdim AS prod.prod. .receipt_number, prod.init_frm_id, prod.frm_typ_id,
prod.sbmtd_dt_id, prod.crtd_user_id, prod.init_src_sys_id, Prod.init_svc_ctr_id,, stg.sbmtd_dt_id, stg.crtd_user_id, stg.init_src_sys_id, stg.init_svc_ctr_id, stg.mig_filename FROM ecisdrdm.stg_application stg КОНЦЕПЦИЯprod.init_src_sys_id, prod.init_svc_ctr_id, prod.mig_filename, prod.mig_modified_dt) = (ВЫБОР stg.init_frm_id, stg.frm_typ_id, stg.sbmtd_dt_id, stg.crtd_user_id, stg.init_src_sys_id, stg.init_svc_ctr_id, stg.mig_filename, CURRENT_TIMESTAMP ОТ ecisdrdm.stg_application_cdim stg ГДЕ prod.receipt_number = stg.receipt_number);
RETURN;

---- - Установите код возврата равным 0 ----

v_Ret: = SQLCODE;


- Обработчик ошибок исключения ---- исключение, когда другие v_ErrorCode: = SQLCODE;v_ErrorMsg: = SQLERRM;v_Ret: = v_ErrorCode;

---- - зафиксировать запись в ErrorLog ---- PERFORM pr_write_error_log (CURRENT_USER, inet_server_addr (), v_Module, v_ErrorCode, v_ErrorMsg);

10); *1024* 10)--- - преднамеренно оставив "совершить" в приложении ---- конец;$$ language plpgsql;

ОШИБКА: должен быть указан тип результата функции Состояние SQL: 42P13 SELECT ecisdrdm.pr_mig_stg_application_cdim (2000);ОШИБКА: функция ecisdrdm.pr_mig_stg_application_cdim (integer) не существует ЛИНИЯ 1: ВЫБРАТЬ ecisdrdm.pr_mig_stg_application_cdim (2000);^

СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам придется добавить явные приведения типов. Состояние SQL: 42883 Символ: 8

ОШИБКА: функция pr_mig_stg_application_cdim () не существует LINE 1: SELECT pr_mig_stg_application_cdim ();^

СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам придется добавить явные приведения типов. Состояние SQL: 42883 Символ: 8

Есть предложения о том, что я делаю неправильно? и как мне запустить функцию так же, как Oracle? БД версии 11.1 работает в AWS с pgAdmin v.4.4

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