我使用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
如何查询整个结果,例如在数组或散列中,而不是循环遍历每个记录?我只需要这个请求结果的元素集合。
答案 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
结果数据集已经包含列名称作为哈希键