2016-11-17 14 views
0

次のリンクで説明した手順で配列を渡そうとしていますが、その配列はオプションでなければなりません。私は一括挿入をその手順でforallを使ってやっています。いくつかの時間リストも空にすることができますが、プロシージャ内の他のものは正常に実行する必要があります。NodeJs Oracledb optionalアレイをINバインド・パラメータとしてoracleプロシージャ

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) { . . . }); 

作品が見つかりますが、私はエラーに

を取得していますヴァルスを渡したくない場合は、私は次のエラーメッセージ

を取得しています

val:[] 
val: null 
val: undefined 

and not having val at all 

を試してみました

nullまたは未定義を渡そうとするとき、または渡さないとき:

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

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

空の配列を渡そうとしたとき、私はヌル

val:[null] 

と手順でFORALLを実行する前に、リストからヌルを削除すると、配列を渡すことによって、周りの仕事をしてくれました。

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

答えて

1

私はこれをバグ(または設計上の欠陥)として扱い、誰かに見せようとします。 PHP OCI8 2.0とNode node-oracledb 1.11は空の配列のバインドを禁止しますが、Python cx_Oracleは空の配列をバインドできません。

関連する問題