2016-04-07 2 views
1

Следующий код выдает исключение:Что является альтернативой для CallableStatement Oracle JDBC getParameterMetaData(). GetParameterType()?

CallableStatement cs = ... 
cs.getParameterMetaData().getParameterType(columnIndex); 

Caused by: java.sql.SQLException: Unsupported feature 
    at oracle.jdbc.driver.OracleParameterMetaData.getParameterType(OracleParameterMetaData.java:166) 
    ... 26 more 

Что альтернативный способ получения тип параметра?

+0

Зачем вам нужен тип параметра (в динамическом режиме тоже)? Преобразовать ли типы перед вызовом оператора? Если это так, вы можете попытаться вызвать его с помощью 'setObject' и надеяться, что Oracle сможет преобразовать его сам. – Thilo

+1

Мы создаем утилиту, которая обнаруживает любой ResultSet из всех параметров и что-то делает с ней и возвращает ее. Где он установлен, неизвестно заранее. – supertonsky

+0

Вы имеете в виду параметр OUT, который в конечном итоге является ResultSet? Означает ли Oracle это? Будет ли это РЕЦЕПТОР? – Thilo

ответ

3

Если кто-то может дать лучший ответ на этот вопрос, я приму ваше. Итак, вот мой ответ на мой вопрос.

CallableStatement cs = ... 
for(int i = 1; i <= cs.getParameterMetaData().getParameterCount(); i++) { 
    try { 
     // because cs.getParameterMetaData().getParameterType(i) is not supported by ojdbc, we let this throw SQLException 
     Object o = cs.getObject(i); 
     if(o instanceof ResultSet) { 
      rs = (ResultSet)o; 
     } 
    } catch(SQLException sqle) { 
     continue; 
    } 
} 

Это точно не отвечает на мой вопрос, но частично решает мою проблему.

Смежные вопросы