Javascript 带有动态sql查询的oracle节点执行器

Javascript 带有动态sql查询的oracle节点执行器,javascript,sql,node-oracledb,Javascript,Sql,Node Oracledb,我正试图用executeMany语句执行UPDATE查询。我已经尝试过在异步forEach循环中执行以下内容: export const asyncForEach = async (array, callback) => { for (let index = 0; index < array.length; index++) { await callback(array[index], index, array); } } 然后最后执行调用 查询如

我正试图用executeMany语句执行UPDATE查询。我已经尝试过在异步forEach循环中执行以下内容:

export const asyncForEach = async (array, callback) => {
    for (let index = 0; index < array.length; index++) {
        await callback(array[index], index, array);
    }
}
然后最后执行调用

查询如下所示:

export const queryPut = data => `
UPDATE status 
    SET MANDATORY_PROP1=:bind4 
        ${data.bind2 && ',OPT_PROP1=:bind2' || ''} 
        ${data.bind3 && ',OPT_PROP2=:bind3' || ''}
    WHERE MANDATORY_PROP2=:bind1 AND MANDATORY_PROP3=:bind5`;
问题是,当我使用ExecuteMy时,我不知道如何告诉查询它应该是什么样子

.executeMany(query,arrayOfObject-binds,options)
只有一个查询。我的对象数组可能如下所示:

[
 {
  bind1: 1,
  bind4: 4,
  bind5: 5,
 },
 {
  bind1: 1,
  bind2: 2,
  bind4: 4,
  bind5: 5,
 },
]
是否有可能在sql中选择性地添加或包括该集合OPT_PROP1=:bind2?是否检查绑定的空值

有了execute,它就可以工作了,但我不认为它对大量数据是有效的


谢谢,

经过一些调查后,我所需要做的就是稍微更改一下SQL:

UPDATE status 
    SET MANDATORY_PROP1=:bind4, 
        OPT_PROP1=COALESCE(:bind2,OPT_PROP1), 
        OPT_PROP2=COALESCE(:bind3,OPT_PROP2),
    WHERE MANDATORY_PROP2=:bind1 AND MANDATORY_PROP3=:bind5`;
[
 {
  bind1: 1,
  bind4: 4,
  bind5: 5,
 },
 {
  bind1: 1,
  bind2: 2,
  bind4: 4,
  bind5: 5,
 },
]
UPDATE status 
    SET MANDATORY_PROP1=:bind4, 
        OPT_PROP1=COALESCE(:bind2,OPT_PROP1), 
        OPT_PROP2=COALESCE(:bind3,OPT_PROP2),
    WHERE MANDATORY_PROP2=:bind1 AND MANDATORY_PROP3=:bind5`;