2017-02-06 2 views
1

У меня есть процедура, которая возвращает Array из пользовательского типа SQL. Я отобразил только объект, определенный пользователем SQL, на объект Java, реализовав SQLData.Как отобразить параметр, который является массивом SQL UDT в JAVA?

Как сопоставить полный массив пользовательских объектов, определенных пользователем?

Выход из оракула хранимой функции что-то вроде этого: ORG.RESULT([ORG.answer],[ORG.answer],[ORG.answer])

Я использую CallableStatement в JAVA вызвать хранимую функцию. Мне было интересно, можно ли получить значение столбца по имени столбца, как в ResultSet.

+0

, пожалуйста, поделитесь фрагментом кода, у вас есть, чтобы понять проблему в руке –

ответ

0

ResultSetMetaData может предоставить вам доступ к информации о возврате COlumn.

Вот небольшой пример из Javadoc, чтобы знать, если первый столбец (a) может быть использована в ИНЕКЕ (это конкретный пример ^^)

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); 
ResultSetMetaData rsmd = rs.getMetaData(); 
int numberOfColumns = rsmd.getColumnCount(); 
boolean b = rsmd.isSearchable(1); 

Вы увидите, что метаданные есть методы получения информации, такие как имена столбцов, типы, количество, ... вы можете использовать их для получения каждой необходимой информации, не зная порядка значений или имен.

Вы можете легко смешать getColumnCount с getColumnName(int index), чтобы получить имена, а затем получить значения из самого ResultSet.

+0

Спасибо AxeIH. Это можно использовать, когда мы вызываем запрос правильно? Мне было интересно, есть ли у нас что-то подобное, как упоминалось выше, когда мы называем хранимую процедуру/функцию. Насколько я понимаю, мы можем получить значение по параметру index, а не по имени столбца. Я ищу что-то вроде этого -> resultSet.getLong («DB_Column_Name»); – user2975747

+0

@ user2975747 «Вызываемый оператор» также может возвращать ResultSet (он расширяет «PreparedStatement»). Я никогда не тестировал метаданные на Вызываемый результат, но я сомневаюсь, что это может иметь значение. У меня нет базы данных, чтобы проверить это прямо сейчас, но если я найду несколько раз сегодня вечером (это 7 утра здесь), я попробую. – AxelH

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