package message.datasource.helper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.support.lob.LobHandler;
import javax.sql.DataSource;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* oracle sql helper implement
*
* @author sunhao(sunhao.java@gmail.com)
* @version V1.0, 2012-4-10 上午07:16:41
*/
public class OracleSqlHelper extends AbstractSqlHelper {
private static final Logger logger = LoggerFactory.getLogger(OracleSqlHelper.class);
private LobHandler lobHandler;
public void setClobValue(PreparedStatement ps, int index, String value) throws SQLException {
this.lobHandler.getLobCreator().setClobAsString(ps, index, value);
}
public String getClobAsString(ResultSet rs, int index)
throws SQLException {
return this.lobHandler.getClobAsString(rs, index);
}
public void setLobHandler(LobHandler lobHandler) {
this.lobHandler = lobHandler;
}
@Override
public String getPageSql(String sql, int start, int num) {
if (start < 0 || num < 0)
return sql;
StringBuffer pageSql = new StringBuffer(" SELECT * FROM ( ");
pageSql.append(" SELECT temp.* ,ROWNUM num FROM ( ");
pageSql.append(sql);
int last = start + num;
pageSql.append(" ) temp where ROWNUM <= ").append(last);
pageSql.append(" ) WHERE num > ").append(start);
logger.debug("page sql:" + pageSql.toString());
return pageSql.toString();
}
@Override
public String existTableSQL(String tableName, DataSource dataSource) throws Exception {
String sql = "SELECT COUNT(TABLE_NAME) FROM USER_TABLES WHERE TABLE_NAME = '" + tableName.toUpperCase() + "'";
return sql;
}
}