Javaからストアドを実行しようとしていますが、
単項目のIN、OUTは問題ないのですが
IN引数を配列にしようとした場合うまく処理できません。
ARRAY array = new ARRAY(ad, con, values);のところで
java.sql.SQLException
Non supported character set: oracle-character-set-832
で落ちてしまいます。
原因であると思われた、CLASSPATHにnls_charset12.jarが通っているかということも確認しました。
原因が分かる方がいましたら教えていただきたく思います。
よろしくお願いします。
環境
OS : WindowsXP
DB : Oracle Database 10g Enterprise Edition Release 10.1.0.3.0
JDBC : Oracle JDBC Driver 9.2.0.5
JDK : JDK 1.4.2
----------------------------------------------------------------
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
public class TestPlsql {
public static void main(String[] args) throws Exception {
String username = "ID";
String password = "PASS";
String thinConn = "jdbc:oracle:thin:@DBADD:1521:DBNAME";
try {
// Oracle JDBC driverをロードします。
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// DB接続
Connection con = DriverManager.getConnection(thinConn,username,password);
// SQLコンテナ作成
// 引数:IN IN OUT OUT IN OUT
String sql = "{call TEST_PKG.TEST_PRO(?,?,?,?,?,?)}";
OracleCallableStatement cstmt = (OracleCallableStatement)con.prepareCall(sql);
cstmt.setInt( 1, 999 );
cstmt.setString( 2, "TEST" );
cstmt.registerOutParameter( 3, OracleTypes.INTEGER );
cstmt.registerOutParameter( 4, OracleTypes.VARCHAR );
// 配列
String[] values = {"18", "25", "104", "53", "29"};
ArrayDescriptor ad = ArrayDescriptor.createDescriptor("VCHAR2ARRAY", con);
ARRAY array = new ARRAY(ad, con, values); ///////ここでエラー
cstmt.setArray(5, array);
cstmt.registerOutParameter(6, OracleTypes.ARRAY, "VCHAR2ARRAY");
// SQL実行
cstmt.execute();
// OUT引数の値を取得する
System.out.println(cstmt.getInt(3));
System.out.println(cstmt.getString(4));
ARRAY array2 = (ARRAY) cstmt.getArray(6);
String[] s = (String[]) array2.getArray();
for (int i=0; i<s.length; i++) {
System.out.println(s[i]);
}
cstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- PHP ワードプレスサイト PHP8.0.25でのWarningエラー 1 2023/06/12 11:44
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シャットダウンフックが呼ばれない
-
ActionForm form にnullが入っ...
-
eclipseに記述したjavaファイル...
-
setAttribute(String, int)は適...
-
Selenium IDEでexportしたコー...
-
かなり初歩的なプログラミング...
-
ファイル名を動的に生成したい
-
アプレットを実行すると、×が表...
-
なんかエラーがでた
-
文字列を数式に
-
アルファベットのソート
-
透過GIFの判定の仕方ありますか?
-
HTMLでのTableタグデータ取得方法
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
-
Junitテストでvoid戻り値メッソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
Javaを使ってデジタル時計を作...
-
ColabでのPytorchのエラー
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
ファイル名を動的に生成したい
-
文字列を数式に
-
<forEach> 内で供給された "ite...
-
シャットダウンフックが呼ばれない
-
Javaからストアド実行(配列項目)
-
ActionForm form にnullが入っ...
-
setAttribute(String, int)は適...
-
(急募)JavaカレンダーをGUI可に...
-
文字サイズが可変のラベル
-
Java での グローバルIP取得
-
python OpenPyXLを使って出力結...
-
データの外挿について
おすすめ情報