我正在尝试按照以下链接中提到的过程传递数组,但该数组应该是可选的。我在程序中使用forall进行批量插入。但是一些时间表也可以是空的,并且程序中的其他东西也应该成功执行。
https://github.com/oracle/node-oracledb/blob/master/doc/api.md#plsqlindexbybinds
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
有效,但如果我不想传递val,我会收到错误
我试过
connection.execute(
"BEGIN mypkg.myinproc(:id, :vals); END;",
[
1234,
{ type: oracledb.NUMBER,
dir: oracledb.BIND_IN,
val: [1, 2, 23, 4, 10]
}
],
function (err) { . . . });
我收到以下错误消息
尝试传递null或未定义或不传递时:
val:[]
val: null
val: undefined
and not having val at all
尝试传递空数组时
PLS-00306: wrong number or types of arguments in call to 'INSERT_PROCEDURE'
我通过使用null
传递数组做了一些工作NJS-039: empty array is not allowed for IN bind
并在执行FORALL之前从列表中删除空值。
这适用于临时但我真的想以正确的方式解决这个问题。
答案 0 :(得分:1)
我会将此视为一个错误(或设计缺陷)并让某人看一下。 PHP OCI8 2.0和Node node-oracledb 1.11都禁止绑定空数组,但Python cx_Oracle则不允许。