【发布时间】:2021-08-25 03:18:11
【问题描述】:
我正在尝试在 Node.js 代码的 forEach 循环中对 OracleDB 运行 MERGE INTO 查询。但只有第一个查询执行和所有其他失败。
代码:
assignedDeals.forEach(async deal => {
let EXPECTED_DATE = null;
let STATUS = null;
let COMMENT = null;
let stmt = `MERGE INTO SP_ASSIGNMENT USING dual ON (ID = ${deal.ID}) WHEN MATCHED THEN UPDATE SET MODIFIED_DATE = current_timestamp `
if (deal.STATUS) {
stmt = stmt + `,STATUS = '${deal.STATUS}'`;
STATUS = `'${deal.STATUS}'`;
}
if (deal.COMMENT) {
stmt = stmt + `,COMMENT = '${deal.COMMENT}'`;
COMMENT = `'${deal.COMMENT}'`;
}
if (deal.EXPECTED_DATE) {
stmt = stmt + `,EXPECTED_DATE = '${deal.EXPECTED_DATE}'`;
EXPECTED_DATE = `'${deal.EXPECTED_DATE}'`
}
stmt = stmt + `WHEN NOT MATCHED THEN INSERT (ID,STATUS,ASSIGNED_USER_ID,MODIFIED_DATE,ASSIGNED_RID,ASSIGNED_BY,EXPECTED_DATE,STATUS,COMMENT)
VALUES (${deal.ID},'${deal.ISASSIGNED}','${deal.USERID}',current_timestamp,${parseInt(deal.RID)},'${deal.ASSIGNED_BY}',${EXPECTED_DATE},${STATUS},${COMMENT})`;
console.log(stmt);
await connection.execute(stmt,{},{
autoCommit: true
});
});
这是在 for 循环中执行多个查询的正确方法吗?
知道为什么它不执行下一个查询吗?
帮帮我,我是 Node.js + Oracle DB 的新手。
【问题讨论】:
-
查看node-oracledb manual。您必须使用绑定变量来确保安全性、性能和可扩展性。
-
不要循环,看看能不能用
executeMany()。 -
谢谢,@ChristopherJones 的 cmets 对我帮助很大。
标签: node.js oracle node-oracledb