Поместите пример результатов в массив, хэш и т. Д., Используя 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

результирующий набор данных уже включает имена столбцов в качестве хэш-ключа

Другие вопросы по тегам