プロが教える店舗&オフィスのセキュリティ対策術

前の質問に似た質問があったのですが、
javaでのストアド呼び出しについて質問です

戻り値(Number型)を返すストアドを呼び出したいのですが
ストアドは test で ストアド自体の引数は第1引数から第5引数までが IN で6番目がoutです。

String sql = "{ ? = call test(?,?,?,?,?)}"
CallableStatement cstmt = con.prepareCall(sql);
cstmt .registerOutParameter( 1, java.sql.Types.INTEGER ); 
//PL/SQLの戻り値
cstmt .setString( 2, "0" );
cstmt .setString( 3, "0" );
cstmt .setString( 4, "0" );
cstmt .setString( 5, "0" );
cstmt .setString( 6, "0" );
cstmt .execute();

try-catch内に上記ソースを記述し実行すると、エラーになってしまいます

cstmt .registerOutParameter( 1, java.sql.Types.INTEGER );の部分が悪いと思うの出すが、PL/SQLのNUMBER型は java.sql.Types.INTEGER  ではいけないのでしょうか
それとも書き方そのものがわるいのでしょうか?
まわりにJavaが出来る人がいなく、困っています。
どなたか力を貸してください

A 回答 (2件)

No.1について誤字があったので訂正です。

すみません。
>これが"1"なのはどうしてでしょう?6番目の引数がinなら
"inなら"じゃなくて"outなら"の間違いですごめんなさい<(_ _)>
    • good
    • 0
この回答へのお礼

その通りにやってみたら出来ました!
ありがとうございました!

お礼日時:2003/03/01 12:09

すでに解決済みでしたら申し訳ありません。


>ストアド自体の引数は第1引数から第5引数までが IN で6番目がoutです。

とご自分でおっしゃっているにもかかわらず、
>cstmt .registerOutParameter( 1, java.sql.Types.INTEGER );
これが"1"なのはどうしてでしょう?6番目の引数がinなら
cstmt .registerOutParameter( 6, java.sql.Types.INTEGER );
なはずですよね?

余談ですが、「エラーになってしまいます」だけだとなんのエラーなのか
わからないので、出力されたトレースなんかをはっていただけるとスムーズに
解決できると思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
たしかにそうですよね!
しかし、今日は事情がありJavaの作業が出来なかったのでまだ試していません。

この方法で試してみたいと思います。
また何かあったらよろしくお願いします

お礼日時:2003/02/27 21:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!