次のリンクに記載されているように、プロシージャで配列を渡そうとしていますが、その配列はオプションである必要があります。手順で 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 を削除する手順で。
これは一時的に機能しますが、この問題を適切な方法で解決したいと思います。