新手问题 想用 Ruby 连接 oracle 数据库执行 Sql 语句,各位请问有推荐的好方法吗?

gsky · 2014年03月21日 · 最后由 ericguo 回复于 2014年03月22日 · 2566 次阅读

最近工作里老是要查 SQL 语句,想写个 Ruby 脚本,可以连接 oracle 数据库并执行 Sql 语句,各位有推荐的好方法吗?

直接用 sequel 操作数据库

#1 楼 @ywjno 搜到了~~谢谢,我去试下。

不用那么烦吧,oci8 足以。

require 'oci8'

conn=OCI8.new('username','password','DB')

co_la_sql = """
SELECT co.containername, la.stdmrgebatch
FROM container co
INNER JOIN a_scheduledata sd on sd.scheduledataid=co.scheduledataid
INNER JOIN a_lotattributes la ON la.containerid=co.containerid
WHERE co.batchno IS NULL AND la.stdmrgebatch IS NOT NULL
  AND la.stdmrgebatch like 'M%'
"""

containernames   = []
stdmrgebatch = []
conn.exec(co_la_sql) do |r|
    containernames << r[0]
    stdmrgebatch << r[1]
end

containernames.each_with_index do |id, i|
    sql = "UPDATE container co SET co.batchno='#{stdmrgebatch[i]}', co.changecount=co.changecount+1 WHERE co.containername IN ('#{id}')"
    puts sql + ";\n"
    num_rows = conn.exec(sql)
    puts "#{num_rows} rows updated."
end

conn.exec "commit"
conn.logoff


需要 登录 后方可回复, 如果你还没有账号请 注册新账号