ruby oracle 事务处理,使用Ruby脚本操作Oracle数据库

本文主要想通过一个简单的例子,说明如何书写Ruby脚本执行Oracle数据库操作,主要步骤如下:

1.在如下地址下载Ruby:

http://www.ruby-lang.org/zh_CN/downloads/

在这里我们下载Ruby的windows版本:

点击:Ruby 1.8.6 一步安装 连接,下载文件:ruby186-26.exe

2.安装Ruby

双击ruby186-26.exe运行即可安装Ruby。

3.下载安装Ruby/OCI8

为了使 Ruby 能够与我们的 Oracle 数据库通信,需要使用 Ruby/OCI8。可从

http://rubyforge.org/projects/ruby-oci8/ 下载文件:

ruby-oci8-1.0.0-mswin32.rb

双击该文件即可完成Ruby/OCI8的安装

4.书写Ruby脚本文件,完成从文本文件offeridlist.txt中读取商品ID并更改商品

状态的任务:

新建一个文本文件,输入如下代码,保存为:update_offer_state.rb

require 'dbi'

i=0

dbh = DBI.connect('DBI:OCI8:TNSDBNAME', 'username', 'password')

sqlCapitalsUpdate = "UPDATE product_offer SET state = ? WHERE offer_id in(?) and state=?"

print "请输入商品原来状态:"

old_state=gets

old_state=old_state.chomp; #chomp去除输入行后面的换行

print "请输入商品目标状态:"

str_state=gets

str_state=str_state.chomp; #chomp去除输入行后面的换行

puts  ""

file1 = File.open('offeridlist.txt',"r")

#str=file.readlines

#puts str

file1.each do |l|

rs = dbh.prepare('SELECT state FROM product_offer where offer_id='+l.to_s)

rs.execute

rsRow = rs.fetch

if rsRow.to_s==old_state.to_s then

puts l

i=i+1

dbh.do(sqlCapitalsUpdate,str_state.to_s,l.to_i,old_state.to_s)

end

end

file1.close

if i.to_i!=0 then

puts  ""

print "以上"+i.to_s+"个商品状态已经由"+old_state.to_s+"改为:"

puts str_state

end

dbh.commit

dbh.disconnect

puts  ""

print "请按任意键退出:"

gets

exit

新建文本文件:offeridlist.txt,在该文件中保存商品ID:

120010020

120010022

将文件offeridlist.txt、update_offer_state.rb保存在同一个目录下

5.检查Ruby脚本的语法错误

在命令行输入 ruby -cw update_offer_state.rb 完成脚本

update_offer_state.rb的语法检查

如果检查语法没有错误,显示如下:

C:/>ruby -cw update_offer_state.rb

Syntax OK

6.运行Ruby脚本:

(1).在命令行输入 ruby update_offer_state.rb 即开始运行    update_offer_state.rb脚本        (2).windows环境下,双击文件update_offer_state.rb也可以    开始运行该脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值