我想从nodejs项目上的oracle db中删除多行。 我在节点(v10.14.2)中使用oracledb(4.0.1)
我在执行操作时遇到这样的错误; {"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 Client已经是 12.2.0.1.0 。
我可以在当前项目上成功使用SELECT
和UPDATE
查询,而不会出现任何错误。现在我想在发生错误时使用DELETE
查询。
我将在下面解释我的代码。
这些是ID,我想从表中删除。 [ { ID: 11865 },{ ID: 23249 } ]
我通过使用SELECT
查询生成了json列表。它告诉我要删除的ID作为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;
};