From: Ollivier Robert Date: 2003-04-30T23:54:39+09:00 Subject: Re: DBI/OCI8 & binary data In article <199h8R-1dU-00@mail.jiubao.org>, KUBO Takehiro wrote: > http://www.jiubao.org/ruby-oci8/ruby-oci8-0.1.3.tar.gz Apart from changing two �"� into �'� at line 106 of oraconf.rb, compiles and installs fine. Now, when I try to read a BLOB -- inserted in the DB by another program -- I get � uninitialized BLOB � (see below). Any idea? -=-=- # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Return pathname of the logo # def get_logo bytes = 0 req = <<-"EOR" select l_name_logo, mime_type, object_size, object from acb_logo where id_activity=:1 EOR loc = nil begin sth = $dbh.prepare(req) sth.execute(@id_activity) row = sth.fetch loc = row[:OBJECT] raw_logo = loc.read # XXX this give uninitialized BLOB rescue DBI::DatabaseError => err $stderr.puts "Error: #{err.errstr}" $dbh.disconnect exit 2 rescue RuntimeError => msg $stderr.puts "Error: #{msg}" $dbh.disconnect exit 3 end # Generate an external image file . # where depends on the stored Content-Type. # fname = @id_activity.to_s case row[:MIME_TYPE].to_s when /jpeg/ fname += ".jpeg" when /gif/ fname += ".gif" when /png/ fname += ".png" else fname += ".gif" end full = row[:OBJECT_SIZE].to_i begin if File.exist?(LOGO_PATH) then if not File.directory?(LOGO_PATH) raise TypeError end else File.mkdir(LOGO_PATH) end File.open(LOGO_PATH + "/" + fname, "w+") do |ofile| bytes = ofile.write(raw_logo) end raise IOError if bytes != full rescue => msg $stderr.puts("Error I/O: #{msg}: #{bytes} written out of #{full}") $dbh.disconnect exit 3 end return fname end # get_logo -=-=- -- Ollivier ROBERT -=- Eurocontrol EEC/AMI -=- roberto@eurocontrol.fr Usenet Canal Historique FreeBSD: The Power to Serve!