企業口コミこの質問・回答は、@ITの旧掲示板からインポートされたものです。配列をPL/SQLに渡してPL/SQL内でInsert処理を行ういつも勉強させていただいています。この業界に入ってまだ間もないので、色々とおかしい表現があるかと思いますが、どうぞよろしくお願いします。javaから配列をストアドに渡して、INSERT処理を行いたいのですが、うまくいかないので投稿させていただきました。10.1.0.3.0APP:apache2.0.55tomcat5.5JDK1.5ThinドライバでVARRAY型を使う方法を取りました。---------------------------------まずは、VARRAY型を宣言します。NUMBER;/---------------------------------次にそれを受け取り、VARRAY型からPL/SQL表への格納を行い、それをバインドしてINSERTするストアドを作ります。DataArrayの値がINSERTされません。間違えている箇所を指摘していただけると助かります。それと上記のストアドを単体でデバッグをしたいのですが、パラメータのOracle配列をどのように記述して渡せばよいのか分かりません。長くなってしまいましたが、よろしくお願いします。コードは間違っていないように思います。引数で渡されているStringの配列にはデータが入っているでしょうか。因みにPL/SQL部分は、まんまコピッて登録して、Javaの実行コードは以下のようにデータ配列をメソッド内で作っている以外はまんまコピーです。原因がJDBCドライバの問題とかだとおてあげですが・・・PL/SQLの確認は、以下の内容のスクリプトファイルをSQL*Plusで実行してみるのはどうでしょうか。work;end;/--------------------------------------------------------あと、ちょっと気になったのですが、呼び出し側でトランザクションの制御をするのであれば、PL/SQLのFunctionでは、commit/rollbackしないようがよいように思います。(0)zillollさん返信ありがとうございます^^。引数で渡されているStringの配列にはデータが入っているでしょうか。これは値は入っています。引数で渡してある配列でも、メソッド内で初期化した配列でも、入りませんでした。combined!"と出ていました。DataArray);の所で、値が入っていないみたいです。ストアドに値が渡されていないのは確認しました。PL/SQLの確認は、以下の内容のスクリプトファイルをSQL*Plusで実行してみるのはどうでしょうか。実行してみたところ、正常にどちらの値もINSERTされました。ストアド側に値がうまく渡っていないようです。JDBCのドライバはthinドライバの最新を入れました。あと、ちょっと気になったのですが、呼び出し側でトランザクションの制御をするのであれば、PL/SQLのFunctionでは、commit/rollbackしないようがよいように思います。