- PR -

WAS上でのsetFixedCHARの使用方法について

1
投稿者投稿内容
みす
会議室デビュー日: 2005/09/01
投稿数: 11
投稿日時: 2008-07-17 11:39
お世話になります、みすと申します。

Oracle10gでCHAR型の項目をWHERE句に指定してSELECTする時に
空白のパディング等を考慮しなくてもよいように、
OraclePreparedStatementのsetFixedCHARを使用しようと考えております。
基本的な使用方法については以下で確認いたしました。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm#sthref807

WAS上でOracle独自メソッドを使用する場合はWASのラッパークラスを通す必要があるようなので
WSCallHelperクラスのjdbcCallメソッドを使用しましたが、ResultSetが0件となってしまいます。
(WSCallHelperクラスの仕様は以下を参考にしました。
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rdat_levport.html)

同じロジックのままで、WHERE句に指定するCHAR項目をMAX桁数まで空白をパディングしてあげると
きちんとResultSetが返ってきますので、setFixedCHARが効いていないような感じがします。

Exceptionは発生していないのでSQL等が間違ってはいないと思うのですが、
どこに問題があるかがわかりません・・・。
原因がわかる方いらっしゃいましたらご教授いただければと思います。

・動作環境
 WAS 6.1.0.5
 Oracle 10g 10.2.0.1.0
 Oracle JDBC Driver 10.2.0.1.0

↓↓↓以下がロジックです↓↓↓
String sString = "AAAA"
java.sql.PreparedStatement.pstmtWork = con.prepareStatement(SELECT * FROM hoge WHERE foo=?);

WSCallHelper.jdbcCall(java.sql.PreparedStatement.class, pstmtWork,
"setFixedCHAR", new Object[]{new Integer(1), sString},
new Class[]{int.class, String.class});

rsWork = pstmtWork.executeQuery();
1

スキルアップ/キャリアアップ(JOB@IT)