[Seasar-user:17252] Re: [S2JDBC]OracleプロシジャでNUMBER型NULLの受け取り
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 4月 13日 (月) 20:20:30 JST
小林 (koichik) です.
Date: Mon, 13 Apr 2009 17:38:01 +0900
From: k wazze <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17250] [S2JDBC]OracleプロシジャでNUMBER型NULLの受け取り
> Oracle のストアドプロシジャを呼び出していますが、
> NUMBER型のOUT引数にNULL値を復帰すると、
> ・Integer型で受け取ると 0 になってしまう
> ・BegDecimal等で受け取ると、ちゃんと nullになる
> ・ResultSet の要素として受け取る場合は、Integer でも null になる
> という現象が発生しています。
> Integer でも null で受け取る方法があるのでしょうか?
既存のテストケースを利用してこちらで試したところ,
Integer でも null を受け取りました.
・ストアド
http://svn.seasar.org/browse/trunk/s2jdbc-it/sql/create_oracle.sql?root=s2container&view=markup
CREATE OR REPLACE PROCEDURE PROC_DTO_PARAM
( param1 IN NUMBER
, param2 IN OUT NUMBER
, param3 OUT NUMBER
) AS
BEGIN
param2 := param2 + param1;
param3 := param1;
NULL;
END PROC_DTO_PARAM;
・Dto とテストケース
http://svn.seasar.org/browse/trunk/s2jdbc-it/src/test/java/org/seasar/extension/jdbc/it/auto/AutoProcedureCallTest.java?root=s2container&view=markup
public static class MyDto {
/** */
public Integer param1;
/** */
@InOut
public Integer param2;
/** */
@Out
public Integer param3;
}
public void testParameter_dto_null() throws Exception {
MyDto dto = new MyDto();
dto.param1 = null;
dto.param2 = 5;
jdbcManager.call("PROC_DTO_PARAM", dto).execute();
assertNull(dto.param1);
assertNull(dto.param2);
assertNull(dto.param3);
}
・テスト結果
https://www.seasar.org/hudson/job/s2container-2.4-s2jdbc-it/288/database=oracle,jdk=JDK-1.6/testReport/org.seasar.extension.jdbc.it.auto/AutoProcedureCallTest/
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内