[Ruby] (ÂÅÚ ÔÅÍÙ)

Золотова Ольга smile на volsu.ru
Пн Июл 26 19:37:50 MSD 2004


Помогите, плиз!!!
Хочу на ruby вставить BLOB в базу (СУБД Oracle)

Нашла в инете вот что:

image = open('SagradaFamilia.gif', "rb").read()
Типа сначала вставляем пустой BLOB
# insert 'EMPTY_BLOB()' to the BLOB column.
sth = dbh.prepare("INSERT INTO photo(name, image) VALUES (?, EMPTY_BLOB())")
sth.execute("Sagrada Familia")

потом получаем rowid вставленной строки (на эту строчку уже ругается
/usr/share/ruby/vendor_ruby/1.8/dbi/dbi.rb:549:in `func':
Driver specific function <rowid> not available. (DBI::InterfaceError))
# get the rowid of inserted row.
rowid = sth.func(:rowid) # call driver specific code.

Но даже если без rowid, а просто выбираю из базы одну запись(поле) с типом
BLOB, ругается вот как:
/usr/share/ruby/vendor_ruby/1.8/DBD/Oracle/Oracle.rb:289:in `execute':
ORA-00932: inconsistent datatypes (DBI::DatabaseError)
        from /usr/share/ruby/vendor_ruby/1.8/dbi/dbi.rb:1039:in `execute'
        from /usr/share/ruby/vendor_ruby/1.8/dbi/dbi.rb:631:in `execute'
        from /usr/share/ruby/vendor_ruby/1.8/dbi/dbi.rb:653:in `select_one'

# select the empty BLOB column as a OCI8::BLOB.
lob = dbh.select_one("SELECT image FROM photo WHERE ROWID = ?", rowid)[0] # 1st row, 1st column
# write data to the LOB.
lob.write(image)

а пустую строку с полем типа BLOB (пустым) таки вставляет....
  




Подробная информация о списке рассылки Ruby