Я искал и, похоже, не нашел ответа на этот вопрос, который бы работал
Мне нужно запустить процедуру, которая уже сохранена после завершения функции вставки
нормально работающейс SQLDeveloper или Dbeaver вы просто сделали бы
set autocommit on
execute procedure
set autocommit off
, используя узел, я могу вызвать процедуру с CALL PROCEDURE()
, но когда я пытаюсь передать оператор SQL set autocommit on
, я получаю ORA-00922 - missing or invalid option
ошибку
Кажется, я не могу найти какой-то способ сделать это, и мне нужно включить автокоммит, иначе файл журнала вылетит с этой процедурой
Вот примеры функций, которые я использую
oracledb.getConnection(oracleConn, function (err, conn) {
if (err) {
console.error(err.message);
} else {
setAutoCommit(conn, "on").then(function (result) {
if (result == "Success") {
callProcedure(conn).then(function (result) {
if (result == "Success") {
setAutoCommit(conn, "off").then(function (result) {
if (result === "Success") {
setTimeout(function () {
conn.close();
}, 60000);
}
});
}
});
}
});
}
});
function setAutoCommit(conn, status) {
return new Promise(function (fulfill, reject) {
var sql
if (status === "on") {
sql = 'set autocommit on';
} else if (status === "off") {
sql = "set autocommit off";
}
try {
conn.execute(sql, function (err, result) {
if (err) {
console.log(err, sql)
} else {
console.log(result);
return fulfill("Success");
}
})
} catch (e) {
console.error(e);
reject(e)
}
})
}
function callProcedure(conn) {
return new Promise(function (fulfill, reject) {
var sql = "call PROCEDURE()";
try {
conn.execute(sql, function (err, result) {
if (err) {
console.log(err, sql)
reject(err)
} else {
console.log(result);
return fulfill("Success");
}
})
} catch (e) {
console.log(e);
reject(e);
}
})
}
если кто-нибудь знает, как это сделать, я не смог бы найти ничего достаточно ясного в документах API oracledb