0

次のリンクに記載されているように、プロシージャで配列を渡そうとしていますが、その配列はオプションである必要があります。手順で forall を使用して一括挿入を行っています。しかし、一部の時間リストも空になる可能性があり、手順内の他のものは正常に実行される必要があります。

https://github.com/oracle/node-oracledb/blob/master/doc/api.md#plsqlindexbybinds

connection.execute(
  "BEGIN mypkg.myinproc(:id, :vals); END;",
  [
    1234,
    { type: oracledb.NUMBER,
       dir: oracledb.BIND_IN,
       val: [1, 2, 23, 4, 10]
    }
  ],

  function (err) { . . . });

検索は機能しますが、valsを渡したくない場合はエラーが発生します

私は試した

val:[]
val: null
val: undefined

and not having val at all

次のエラーメッセージが表示されます

null または undefined を渡そうとしたり、渡さない場合:

PLS-00306: wrong number or types of arguments in call to 'INSERT_PROCEDURE'

空の配列を渡そうとしたとき

NJS-039: empty array is not allowed for IN bind

配列にnullを渡すことで回避しました

 val:[null]

FORALL を実行する前にリストから null を削除する手順で。

これは一時的に機能しますが、この問題を適切な方法で解決したいと思います。

4

1 に答える 1