/**
* @Title: callProcedure
* @Description: 执行存储过程的公共方法
* @param sql
* : 调用存储过程的语句
* @param params
* : 条件
* @return
* @author
* @date 2011-12-29
*/
public String[] callProcedure(String sql, String[][] params) {
String[] result = null;
if (null == sql || "".equals(sql.trim())) {
LOG.error("The sql is null, return.");
return result;
}
// 获取数据库连接
Connection connection = JDBCUtil.getInstance().getConnection();
if (null == connection) {
LOG.error("The database connction is null, return.");
return result;
}
CallableStatement cs = null;
int len = params == null ? 0 : params.length;
int[] index = new int[len];
try {
cs = connection.prepareCall(sql);
int position = 0;
// 设置入参/出参
for (int i = 0; i < len; i++) {
if ("IN".equalsIgnoreCase(params[i][0])) {
cs.setString(i + 1, params[i][1]);
} else if ("OUT".equalsIgnoreCase(params[i][0])) {
cs.registerOutParameter(i + 1,
Integer.valueOf(params[i][1]));
index[position] = i + 1;
position++;
}
}
cs.execute();
result = new String[position];
// 处理返回值
for (int i = 0; i < index.length; i++) {
if (0 != index[i]) {
result[i] = String.valueOf(cs.getObject(index[i]));
}
}
} catch (SQLException e) {
LOG.error("JDBCCore:=>callProcedure : SQLException!", e);
} catch (Exception e) {
LOG.error("JDBCCore:=>callProcedure : Exception!", e);
} finally {
JDBCUtil.close(connection, null, cs);
}
return result;
}
}