0
SQLでデータが取得できない
このbeanだけSQLの結果を取得できなく悩んでいます。
些細なミスのような気もしますが、何度も見直したりlogを入れてみたりして試したんですが、どうしても間違っている箇所がわかりません。
よろしくお願いします。
ちなみに、他のPGではSQL接続できていますので、DBとの接続部分は問題ないと思われます。
また、このSQLをlogで吐き出したものをObjectBrowserで実行したところ、きちんと結果が返されたのでデータはあります。
resultSet.next()をlogで吐き出したところfalseと返されるので、1件もSQLの結果がないといわれているようです。
java1.6
eclipse
apache
tomcat
/**
* DPC統計出力情報取得
*
* @return 成功:true 失敗:false
*/
public boolean getDpcToukei1Data() throws SystemException{
log.info(ipAddress + " - " + "getDpcToukei1Data() START");
ResultSet resultSet = null;
Statement stmt = null;
Connection conn = null;
DataSource dataSource = null;
boolean rc = false;
int strBi = Integer.parseInt(strNengetsu,10)*100 + 1;
int endBi = Integer.parseInt(endNengetsu,10)*100 + 99;
try{
dataSource = (DataSource) DataSourceFactory.getDataSource();
conn = dataSource.getConnection();
}catch(SQLException e){
log.error(ipAddress + " - " + "SQL接続エラー:(" + e.toString() + ")");
throw new SystemException("errors.system.exception","SQL接続エラー:(" + this.getClass() + ")<br>(" + e.toString() + ")");
}
try{
StringBuffer sqlBuffer = null;
sqlBuffer = new StringBuffer();
sqlBuffer.append("select");
sqlBuffer.append(" NVL(dpc.KA,' ') as KA_CD");
sqlBuffer.append(" ,NVL(ka.KA_NAME,' ') as KA_NAME");
sqlBuffer.append(" ,NVL(sum(kanja.PATIENT_SEX),0) as KENSU ");
sqlBuffer.append(" ,NVL(sum(DECODE(kanja.PATIENT_SEX, '1',1, 0)),0) as MANKENSU");
sqlBuffer.append(" ,NVL(sum(DECODE(kanja.PATIENT_SEX, '2',1, 0)),0) as WOMANKENSU");
sqlBuffer.append(" ,NVL(sum(dpc.LOS),0) as LOS");
sqlBuffer.append(" ,NVL(sum(dpc.GOKEITENSU),0) as HOKATSUGAKU");
sqlBuffer.append(" ,NVL(sum(e.KOITENSU),0) as DEKIDAKAGAKU ");
sqlBuffer.append(" from");
sqlBuffer.append(" SUMDPC dpc ");
sqlBuffer.append(" ,SUMPATIENT kanja ");
sqlBuffer.append(" ,KAMST ka");
sqlBuffer.append(" ,(select DATASHIKIBETSUNO ");
sqlBuffer.append(" ,SUM(KOITENSU) as KOITENSU ");
sqlBuffer.append(" ,SHINRYOKAKBN ");
sqlBuffer.append(" from DPC_EFILE ");
sqlBuffer.append(" where NENTSUKI between " + strNengetsu + " and " + endNengetsu);
sqlBuffer.append(" group by DATASHIKIBETSUNO, SHINRYOKAKBN ");
sqlBuffer.append(" ) e ");
sqlBuffer.append(" where");
sqlBuffer.append(" dpc.PATIENT_NO = kanja.PATIENT_NO");
sqlBuffer.append(" and kanja.KANJA_NO = e.DATASHIKIBETSUNO(+)");
sqlBuffer.append(" and dpc.KA = ka.KA_CD ");
sqlBuffer.append(" and ka.SEI_KA_CD = e.SHINRYOKAKBN");
sqlBuffer.append(" and dpc.ADM_DATE between " + strBi + " and " + endBi);
sqlBuffer.append(" group by dpc.KA, ka.KA_NAME");
sqlBuffer.append(" order by dpc.KA ");
if(log.isDebugEnabled()){
log.debug(ipAddress + " - " + "sql = (" + sqlBuffer.toString() + ")");
}
stmt = conn.createStatement();
resultSet = stmt.executeQuery(sqlBuffer.toString());
log.debug(resultSet.next());
int count=0;
while(resultSet.next()){
DpcToukei1StateBean DpcToukei1StateBean = new DpcToukei1StateBean();
//診療科
DpcToukei1StateBean.setKaCd(ItsUtil.toMS932(resultSet.getString("KA_CD")).trim());
DpcToukei1StateBean.setKaName(ItsUtil.toMS932(resultSet.getString("KA_NAME")).trim());
//件数
DpcToukei1StateBean.setKensu(ItsUtil.toMS932(resultSet.getString("KENSU")).trim());
DpcToukei1StateBean.setMan(ItsUtil.toMS932(resultSet.getString("MANKENSU")).trim());
DpcToukei1StateBean.setWoman(ItsUtil.toMS932(resultSet.getString("WOMANKENSU")).trim());
//在院日数
DpcToukei1StateBean.setZaiinNissu(ItsUtil.toMS932(resultSet.getString("LOS")).trim());
//包括請求額
DpcToukei1StateBean.setHokatsuSeikyu(ItsUtil.editNumber(1,ItsUtil.toMS932(resultSet.getString("HOKATSUGAKU")).trim()));
//出来高請求額
DpcToukei1StateBean.setDekidakaSeikyu(ItsUtil.editNumber(1,ItsUtil.toMS932(resultSet.getString("DEKIDAKAGAKU")).trim()));
//差額
DpcToukei1StateBean.setSagaku(ItsUtil.editNumber(1,Integer.toString(resultSet.getInt("HOKATSUGAKU") - resultSet.getInt("DEKIDAKAGAKU"))));
//1日あたりの包括請求額
DpcToukei1StateBean.setHokatsuSeikyu1nichi(ItsUtil.editNumber(1,Integer.toString(resultSet.getInt("HOKATSUGAKU")/resultSet.getInt("LOS"))));
//1日あたりの出来高請求額
DpcToukei1StateBean.setDekidakaSeikyu1nichi(ItsUtil.editNumber(1,Integer.toString(resultSet.getInt("DEKIDAKAGAKU")/resultSet.getInt("LOS"))));
put(Integer.toString(count), DpcToukei1StateBean);
rc = true;
count++;
}
}catch(SQLException e){
log.error(ipAddress + " - " + "DPC統計1出力情報の取得エラー:(" + e.toString() + ")");
throw new SystemException("errors.system.exception", "DPC統計1出力情報の取得エラー:(" + this.getClass() + ")<br>(" + e.toString() + ")");
} finally {
try{
if (stmt != null) {
stmt.close();
}
if (resultSet != null) {
resultSet.close();
}
if (conn != null) {
conn.close();
}
}catch(SQLException e){
log.error(ipAddress + " - " + "SQLクローズエラー:(" + e.toString() + ")");
throw new SystemException("errors.system.exception", "SQLクローズエラー:(" + this.getClass() + ")<br>(" + e.toString() + ")");
}
}
return rc;
}