Поместите пример результатов в массив, хэш и т. Д., Используя ruby и oci8.
Я использую ruby-2.3
а также oci-8 gem
, Я хочу сделать select query
:
stm = "select * from DATASERVICEUSERS t where boss<>100 and loginad is not null"
res = CONN.exec(stm).fetch_hash do |row|
#do something with row
end
CONN.logoff
Как я могу запросить результат целого, чтобы поместить, например, в массив или хэш, вместо циклического прохождения каждой записи? Мне нужна просто коллекция элементов результата этого запроса.
1 ответ
Oci-8 не доказывает это. .exec
Метод создает курсор, который вам нужно обработать, как демонстрирует ваш код. Вы можете заполнить массив массивом полей или хешем.
Вот пример для массива
records = []
conn.exec(sql) { |record| records << record}
# records: [["xxxx", "xxxx"], ["yyyy", "yyyy"], ..]
Я знаю, что это довольно старый вопрос, но я столкнулся с этой проблемой. Я не так хорошо разбираюсь в ruby, но oci8 2.2.7 на самом деле предоставляет fetch_hash
https://www.rubydoc.info/gems/ruby-oci8/OCI8/Cursor
вот пример из моего варианта использования:
records = []
dataCursor = @odb.exec(queryUUNRData)
while((data = dataCursor.fetch_hash) != nil)
records.push data
end
dataCursor.close
результирующий набор данных уже включает имена столбцов в качестве хэш-ключа