Witch Oracle library should I use

B

Ben Edwards

Have had a look on rubyforge and done a little looking around but not
totaly sure which ruby oracle library's I should use.

I am connecting to a 10g database.

Ruby9i and Ruby/OCI8 seem to be the contenders, or is there something else.

What would people recommend?

Ben
 
B

Brian Candler

Have had a look on rubyforge and done a little looking around but not
totaly sure which ruby oracle library's I should use.

I am connecting to a 10g database.

Ruby9i and Ruby/OCI8 seem to be the contenders, or is there something else.

What would people recommend?

ruby-oci8. It's been around for a long time, and it works well. It's the API
used by ActiveRecord's Oracle adaptor, and it also comes with a DBD for use
with ruby-dbi. I'm using it with Oracle 10g now.

I've never seen or used Ruby9i though.
 
U

Ulf Hellström

Hi,

I'm new on this mailing list. My name is Ulf , lives in Sweden and
been developing for Oracle for many, many years. Used to work for
Oracle for 10 years.
I've been studying and learning Ruby for aroune 2 months now and has
done some work with Ruby and Oracle.
As suggested i would defenly say go for Ruby/OCI8

There are some good introductions on how to use Ruby with Oracle on
OTN (Oracle Technology Network)

See the following links:

http://www.oracle.com/technology/pub/articles/marx-ruby.html
http://www.oracle.com/technology/pub/articles/tate-activeerecord.html
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html
http://www.oracle.com/technology/pub/articles/saternos-rails.html

Kindly Rgds
/Ulf
 
B

Ben Edwards

Hi,

I'm new on this mailing list. My name is Ulf , lives in Sweden and
been developing for Oracle for many, many years. Used to work for
Oracle for 10 years.
I've been studying and learning Ruby for aroune 2 months now and has
done some work with Ruby and Oracle.
As suggested i would defenly say go for Ruby/OCI8

There are some good introductions on how to use Ruby with Oracle on
OTN (Oracle Technology Network)

See the following links:

http://www.oracle.com/technology/pub/articles/marx-ruby.html
http://www.oracle.com/technology/pub/articles/tate-activeerecord.html
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html
http://www.oracle.com/technology/pub/articles/saternos-rails.html

Thanks for this. Have been trying Ruby/OCI8 and it seems to work.
Only thing is when it fetches row it is referenced as an array
(row[0], row[1]...). Is there a way of referencing the column names
(row["username"]...).

Ben
Kindly Rgds
/Ulf
Ruby/OCI8


--=20
Ben Edwards - Bristol, UK
If you have a problem emailing me use
http://www.gurtlush.org.uk/profiles.php?uid=3D4
(email address this email is sent from may be defunct)
 
D

Dave Rose

Ben said:

Thanks for this. Have been trying Ruby/OCI8 and it seems to work.
Only thing is when it fetches row it is referenced as an array
(row[0], row[1]...). Is there a way of referencing the column names
(row["username"]...).

Ben

i did a describe on my table that has a lot of column
and cut & pasted the result (in order) into a ruby array
and whose named ruby array.index(named column) address that certain
corresponding column in the ruby
oci8 array....
readcols="_CODE, V_NUM, CUST_CODE, STYP_CODE, CAT_CODE, ACTN_CODE,
ACTION_DATE, ACTIVITY_DATE, USER_ID, READING, UMPTION, DOS, RTYP,
REAS_CE, ARGE_DATE, UR_CALC_NUM, INVN_CODE, UIER, U_CADJM, U_FACTOR,
UR_HIGH_LOW_EXCP, UR_TRBL_CODE_1, UR_TRBL_CODE_2, U_TRBL_CODE_3,
AT_CODE, _CHARGE_FREQUENCY, U_CHARGE_START_DATE, UR_NUTS,
UR_REAS_CODE_CNCL, US_CNCL_DATE, URR_CNCL_USER_ID, UR_CUST_CODE_PRIMARY,
URRCODE_PRIMAR...and on and on....".split(", ")
recs=conn.exec("SELECT * FROM atable WHERE CODE NOT IN
('IN','SKIP','OUT') AND CODE = '#{prem}' AND CUST_CODE = #{cust.to_i}
AND TO_CHAR(GE_DATE,'YYYYMMDD') = '#{chargedon}' AND IS_DOS > 0"){|r|
readrec<<r}
readrec.each do |tut|
prevdait=tut[readcols.index("_DATE")]
 
B

Brian Candler

Thanks for this. Have been trying Ruby/OCI8 and it seems to work.
Only thing is when it fetches row it is referenced as an array
(row[0], row[1]...). Is there a way of referencing the column names
(row["username"]...).

You could steal some code from ActiveRecord's Oracle connection adaptor.
When you call Foo.connection.select_all(...) in ActiveRecord, it returns
an array of
[{colname=>value, colname=>value},
{colname=>value, colname=>value},
...]

Or I have a vague recollection that maybe ruby-dbi will do this for you.
 
U

Ulf Hellström

Hi Ben,

You could always use fetch_hasch method instead of fetch. This will =20
fetch the data as a ruby Hash where each key is the column name

Below is a simple example that select all columns from USER_TABLES =20
but only prints out the TABLE_NAME column.

Note: The reference to the column name, in the sample TABLE_NAME has =20
to be in uppercase.

The OCI8 API is documented quite good see

http://ruby-oci8.rubyforge.org/en/api.html

require 'oci8'

class Testoci

def get_data

puts "***************************"
puts "Connecting..."
puts "***************************"
connection =3D OCI8.new('demo', 'demo', 'XE')
puts "***************************"
puts "Fetching data"
puts "***************************"
cursor =3D connection.parse("SELECT * FROM USER_TABLES")
cursor.exec()
# print out only the values of the TABLE_NAME column
while res =3D cursor.fetch_hash()
puts res["TABLE_NAME"]
end
cursor.close
connection.logoff
end

end

ora=3DTestoci.new
ora.get_data


Kindly Rgds
/Ulf

Hi,

I'm new on this mailing list. My name is Ulf , lives in Sweden and
been developing for Oracle for many, many years. Used to work for
Oracle for 10 years.
I've been studying and learning Ruby for aroune 2 months now and has
done some work with Ruby and Oracle.
As suggested i would defenly say go for Ruby/OCI8

There are some good introductions on how to use Ruby with Oracle on
OTN (Oracle Technology Network)

See the following links:

http://www.oracle.com/technology/pub/articles/marx-ruby.html
http://www.oracle.com/technology/pub/articles/tate-activeerecord.html
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html
http://www.oracle.com/technology/pub/articles/saternos-rails.html

Thanks for this. Have been trying Ruby/OCI8 and it seems to work.
Only thing is when it fetches row it is referenced as an array
(row[0], row[1]...). Is there a way of referencing the column names
(row["username"]...).

Ben
Kindly Rgds
/Ulf
Ruby/OCI8


--=20
Ben Edwards - Bristol, UK
If you have a problem emailing me use
http://www.gurtlush.org.uk/profiles.php?uid=3D4
(email address this email is sent from may be defunct)
 
B

Ben Edwards

ruby-oci8. It's been around for a long time, and it works well. It's the API
used by ActiveRecord's Oracle adaptor, and it also comes with a DBD for use
with ruby-dbi. I'm using it with Oracle 10g now.

ruby-dbi seems like a good idea but its Beta and there hasn't been a
release for over a year. Don't think the folks here will trust it in
a production environment.

Ben
 
B

Ben Edwards

Hi Ben,

You could always use fetch_hasch method instead of fetch. This will
fetch the data as a ruby Hash where each key is the column name

Below is a simple example that select all columns from USER_TABLES
but only prints out the TABLE_NAME column.

Note: The reference to the column name, in the sample TABLE_NAME has
to be in uppercase.

The OCI8 API is documented quite good see

http://ruby-oci8.rubyforge.org/en/api.html

require 'oci8'

class Testoci

def get_data

puts "***************************"
puts "Connecting..."
puts "***************************"
connection =3D OCI8.new('demo', 'demo', 'XE')
puts "***************************"
puts "Fetching data"
puts "***************************"
cursor =3D connection.parse("SELECT * FROM USER_TABLES")
cursor.exec()
# print out only the values of the TABLE_NAME column
while res =3D cursor.fetch_hash()
puts res["TABLE_NAME"]
end
cursor.close
connection.logoff
end

end

ora=3DTestoci.new
ora.get_data

Thanks, just the ticket.

Shame fetch_hash is not an iterator but think I am going to write a
wrapper to make it easier to switch librarys/databases.

Ben
Kindly Rgds
/Ulf

Hi,

I'm new on this mailing list. My name is Ulf , lives in Sweden and
been developing for Oracle for many, many years. Used to work for
Oracle for 10 years.
I've been studying and learning Ruby for aroune 2 months now and has
done some work with Ruby and Oracle.
As suggested i would defenly say go for Ruby/OCI8

There are some good introductions on how to use Ruby with Oracle on
OTN (Oracle Technology Network)

See the following links:

http://www.oracle.com/technology/pub/articles/marx-ruby.html
http://www.oracle.com/technology/pub/articles/tate-activeerecord.html
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html
http://www.oracle.com/technology/pub/articles/saternos-rails.html

Thanks for this. Have been trying Ruby/OCI8 and it seems to work.
Only thing is when it fetches row it is referenced as an array
(row[0], row[1]...). Is there a way of referencing the column names
(row["username"]...).

Ben
Kindly Rgds
/Ulf
Ruby/OCI8

On 4 maj 2007, at 20.38, Brian Candler wrote:

On Sat, May 05, 2007 at 12:27:13AM +0900, Ben Edwards wrote:
Have had a look on rubyforge and done a little looking around
but not
totaly sure which ruby oracle library's I should use.

I am connecting to a 10g database.

Ruby9i and Ruby/OCI8 seem to be the contenders, or is there
something else.

What would people recommend?

ruby-oci8. It's been around for a long time, and it works well.
It's the API
used by ActiveRecord's Oracle adaptor, and it also comes with a DBD
for use
with ruby-dbi. I'm using it with Oracle 10g now.

I've never seen or used Ruby9i though.


--
Ben Edwards - Bristol, UK
If you have a problem emailing me use
http://www.gurtlush.org.uk/profiles.php?uid=3D4
(email address this email is sent from may be defunct)


--=20
Ben Edwards - Bristol, UK
If you have a problem emailing me use
http://www.gurtlush.org.uk/profiles.php?uid=3D4
(email address this email is sent from may be defunct)
 
B

Brian Candler

ruby-dbi seems like a good idea but its Beta and there hasn't been a
release for over a year. Don't think the folks here will trust it in
a production environment.

The last release was August 2006, and it has had 11,870 downloads since
then.

I used it (with Oracle) in a large project at a previous employer about 4
years ago, which is still running strong. Before ActiveRecord came along,
this was probably the most widely used database interface from Ruby. I
wouldn't worry about the "beta" label.

OTOH, if you're writing code which *only* ever needs to talk to Oracle, then
you may as well cut out the middle man.

Regards,

Brian.
 
B

Bertram Scharpf

Hi Ben,

Am Samstag, 05. Mai 2007, 00:27:13 +0900 schrieb Ben Edwards:
Have had a look on rubyforge and done a little looking around but not
totaly sure which ruby oracle library's I should use.

I am connecting to a 10g database.

Ruby9i and Ruby/OCI8 seem to be the contenders, or is there something else.

What would people recommend?

I managed to compile Ruby9i 16 months ago. I sucessfully
connected to Oracle 8 and 9 databases. The thread started
with message id 175798.

I remember I was quite happy with it. Good luck!

Bertram
 
B

Ben Edwards

The last release was August 2006, and it has had 11,870 downloads since
then.

I used it (with Oracle) in a large project at a previous employer about 4
years ago, which is still running strong. Before ActiveRecord came along,
this was probably the most widely used database interface from Ruby. I
wouldn't worry about the "beta" label.

Need to have a look at ActiveRecord bit it seems not to be geared
towards SQL. This is not a bad thing per say but I have a lot of SQL.

I do fancy using some type of wrapper as we are thinking of moving
stuff to postgress.

Regards,
Ben
 
K

khaines

Don't read too much into that "beta" label nor the last release. I've
been using ruby-dbi in many, many production apps for years. It's fine.
And releases aren't frequent because, while DBI could certainly be
improved, it is also stable and works. If it's not broken.....


Kirk Haines
 
J

James Edward Gray II

Don't read too much into that "beta" label nor the last release.
I've been using ruby-dbi in many, many production apps for years.
It's fine. And releases aren't frequent because, while DBI could
certainly be improved, it is also stable and works. If it's not
broken.....

I know the DBI has been handed off at least once. My understanding
was also that the current maintainers aren't too interested in
resurrecting it. I agree that it works, but I'm not so sure not
abandonware. I know there are some very old bugs in it still not
fixed, though they are minor issues.

Sequel is looking like a pretty promising library to replace the DBI,
but it doesn't yet support Oracle:

http://sequel.rubyforge.org/

James Edward Gray II
 
K

khaines

On May 8, 2007, at 1:53 PM, (e-mail address removed) wrote:
I know the DBI has been handed off at least once. My understanding was also
that the current maintainers aren't too interested in resurrecting it. I
agree that it works, but I'm not so sure not abandonware. I know there are
some very old bugs in it still not fixed, though they are minor issues.

I am one of those maintainers. My attitude, at this point, with that
codebase, is basically one of hand-off maintenance unless a major problem
rears its head.
Sequel is looking like a pretty promising library to replace the DBI, but it
doesn't yet support Oracle:

http://sequel.rubyforge.org/

Sequel looks quite promising, but it's also not really in the same niche
as DBI. It's more of an ORM variation. It has some really neat ideas in
it, though.

I've believed, for a couple years, that we need a DBI2. Something that
isn't so directly modeled on the Perl DBI, but is, instead, more rubyesque
in it's API design, and something that learns from DBI and fixes some of
DBI's faults without overachieving -- lean, fast, simple, with a clean
Ruby API.

I've discussed this with some other people, off and on, and decided a
couple months ago that this would be a good project to start on here at
the beginning of the summer. I have a couple things ahead of it in my
queue still, but consider this a prerelease announcement. :)

So if anyone has any specific suggestions or requests to voice regarding a
fast, clean DBI replacement, now would be a good time.


Kirk Haines
 
J

James Edward Gray II

I've believed, for a couple years, that we need a DBI2. Something
that isn't so directly modeled on the Perl DBI, but is, instead,
more rubyesque in it's API design, and something that learns from
DBI and fixes some of DBI's faults without overachieving -- lean,
fast, simple, with a clean Ruby API.

I've discussed this with some other people, off and on, and decided
a couple months ago that this would be a good project to start on
here at the beginning of the summer. I have a couple things ahead
of it in my queue still, but consider this a prerelease
announcement. :)

I think this is an exceptionally good idea. You will be very
popular. ;)

James Edward Gray II
 
R

Robert Klemme

I think this is an exceptionally good idea. You will be very popular. ;)

Completely agree! This sounds promising.

Kirk, what do you think about starting a Wiki to collect requirements
and / or improvement ideas? I have at least one requirement that I
believe is not covered by DBI right now.

I'd also love to help although I can offer only limited resources.

Kind regards

robert
 
K

khaines

Kirk, what do you think about starting a Wiki to collect requirements and /
or improvement ideas? I have at least one requirement that I believe is not
covered by DBI right now.

I will do that. Thanks for the suggestion. I'll follow up to the list in
about a week with wiki and initial project information.


Kirk Haines
 
C

Clifford Heath

I've believed, for a couple years, that we need a DBI2.

Just to add my voice in approval, in addition to which I've
sent you a private message offering help. I'd love to have
a better basis on which to build my ActiveFacts library,
instead of relying on the adapters of ActiveRecord.

I'm also running a BOF session on support for Enterprise
and Legacy databases at the RailsConf next week. Hopefully
some of you will be there to discuss things and maybe help
out on the panel.

Clifford Heath, Data Constellation.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top