Я хочу удалить несколько строк из oracle db в проекте nodejs. Я использую oracledb (4.0.1) с узлом (v10.14.2)
В то время как я делаю, я получил ошибку, которая такова;{"level":50,"time":1573197878989,"msg":"Failed: Error: DPI-1050: Oracle Client library is at version 11.2 but must be at version 12.1 or higher Case: ora.deleteMany","pid":11092,"hostname":"***","v":1}
В соответствии с этой ошибкой он утверждает, что проблема с Oracle Client. Но мой клиент Oracle уже 12.2.0.1.0 .
Я могу успешно использовать запросы SELECT
и UPDATE
в моем текущем проекте без каких-либо ошибок. Теперь я хочу использовать DELETE
запрос, пока я делаю, я получил эту ошибку.
Я объясню, как я кодирую ниже.
Это идентификаторы, которые я хочу удалить из таблицы. [ { ID: 11865 }, { ID: 23249 } ]
Я генерирую этот список json с помощью запроса SELECT
. Он вернул мне эти идентификаторы для удаления в виде списка json.
const getTodayDailyDiff = async config => {
let test = [];
const today = new Date().toISOString().split('T')[0];
let connection;
try {
connection = await oracledb.getConnection(config);
test = await connection.execute(
`
(SELECT ID FROM TNT.DAILY_DIFF
WHERE TO_CHAR(DIFF_DATE, 'YYYY-MM-DD') = :today)
`,
[today]
);
} catch (err) {
log.error(err, 'ora.diffReport');
} finally {
if (connection) {
connection.close();
}
}
return test;
};
Затем я отправил этот список json (getTodayDailyDiff.rows
) на мой запрос DELETE
.
const deleteMany = async (config, getTodayDailyDiff.rows) => {
let test = [];
let connection;
const sql = `DELETE FROM DAILY_DIFF WHERE ID = :ID`;
const options = {
dmlRowCounts: true,
autoCommit: true
};
try {
connection = await oracledb.getConnection(config);
test = await connection.executeMany(sql, getTodayDailyDiff.rows, options);
} catch (err) {
log.error(err, 'ora.deleteMany');
} finally {
if (connection) {
connection.close();
}
}
return test;
};