Вообще говоря, полезно показывать сообщение об ошибке, которое вы получаете, когда вам нужна помощь в решении проблемы.Я постараюсь помочь, поскольку есть некоторые очевидные ошибки.
Во-первых, в вашем операторе SQL не определены переменные связывания.Переменные связывания определяются путем ввода точки с запятой перед именем переменной связывания.Поэтому ваш вызов simpleExecute должен выглядеть следующим образом:
result = await this._database.simpleExecute(
`INSERT INTO TABLE1 ${sql}
VALUES (AUDIT_LOG_ID_SEQ.NEXTVAL, :AC, :TRANSACTION_SEQUENCE, :USER_ID)`,
bindVars
);
Обратите внимание, что в приведенном выше утверждении есть три переменные связывания: AC, TRANSACTION_SEQUENCE и USER_ID.Я не сделал AUDIT_LOG_ID_SEQ.NEXTVAL переменной связывания, потому что значение, которое вы вводите, должно быть получено из последовательности.
Я предполагаю, что вы хотите, чтобы значение было вставлено в столбец AUDIT_LOG_ID.Для этого вам нужно определить переменную связывания "out" (по умолчанию - in), а затем использовать предложение RETURNING для получения значения.
Определение вашей переменной связывания будет выглядеть так:
const bindVars = {
AUDIT_LOG_ID: {
dir: oracledb.BIND_OUT,
type: oracledb.NUMBER
},
AC: action,
TRANSACTION_SEQUENCE: transaction_sequence,
USER_ID: user
};
Тогда вам нужно обновить ваш SQL-код до следующего:
result = await this._database.simpleExecute(
`INSERT INTO TABLE1 ${sql}
VALUES (AUDIT_LOG_ID_SEQ.NEXTVAL, :AC, :TRANSACTION_SEQUENCE, :USER_ID)
RETURNING AUDIT_LOG_ID into :AUDIT_LOG_ID`,
bindVars
);
Попробуйте внести эти изменения и сообщите нам, что вы получаете.