使用ruby和oci8将示例结果放入数组,哈希等中

时间:2016-12-06 07:08:46

标签: ruby oci

我使用ruby-2.3oci-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

如何查询整个结果,例如在数组或散列中,而不是循环遍历每个记录?我只需要这个请求结果的元素集合。

2 个答案:

答案 0 :(得分:0)

Oci-8并不能证明这一点。 .exec方法产生一个游标,您需要对其进行处理,如代码演示所示。您可以使用字段数组或哈希表填充数组。

下面是一个数组示例

  records = []
  conn.exec(sql) { |record| records << record}

 # records: [["xxxx", "xxxx"], ["yyyy", "yyyy"], ..]

答案 1 :(得分:0)

我知道这是一个很老的问题,但是我遇到了这个问题。我不太了解ruby,但oci8 2.2.7实际上提供了fetch_hash

https://www.rubydoc.info/gems/ruby-oci8/OCI8/Cursor#fetch_hash-instance_method

这是我用例的一个例子:

records = []
dataCursor = @odb.exec(queryUUNRData)
while((data = dataCursor.fetch_hash) != nil)
  records.push data
end
dataCursor.close

结果数据集已经包含列名称作为哈希键