PostreSgl typ text v Oracle + perl DBI

Arnost Valicek xvalicek na fi.muni.cz
Úterý Listopad 6 00:58:40 CET 2001


Dobry den,

kterym typem Oracle (v8) by bylo nejlepsi nahradit typ 'text' z PostgreSQL
abych musel co nejmene upravovat program v perlu (DBI). 

Skousel jsem pouzit CLOB. Ale moc mi to nefunguje, v manualovych
strankach DBD::Oracle se pise, ze pro insert/update mam pouzit neco jako 
$sth->($field_num, $lob_value, { ora_type => ORA_CLOB });, pro select
by to melo nejak fungovat (ja mam zatim opacnou skusenost - viz priklad
na konci)

Chtel bych se tomu pokud mozno vyhnout, v PostgreSQL to fungovalo hezky
a nerad by menil kusy programu (doufal sem, ze DBI takove problemy resi ;( 

Je tedy vubec mozne s Oracle a DBI pouzit typ CLOB (nebo neco jinebo pro
dlouhe texty), tak abych s tim mohl pracovat stejne jako napriklad s varchar?
Tzn. zadna vata typu bind_param...

jak mi to pracuje aspon na jednoduchem prikladu:

v SQL:
create table blb1
(
  t1 CLOB,
  t2 CLOB
);

v perlu:
---
my $sth;
$sth=$dbh->prepare("insert into blb1 values (?,?)");
$sth->execute('x','y');
---
funguje...


--
$sth=$dbh->prepare("select * from blb1");
$sth->execute;
my $hash_ref;
while ($hash_ref = $sth->fetchrow_hashref)
{
  print "$$hash_ref{t1}         $$hash_ref{t2}\n";
}
---
uz nefunguje...


perl vypise:
DBD::Oracle::db prepare failed: ORA-03115: unsupported network datatype 
or representation (DBD: odescr failed) at ../clobtest.pl line 34.
Can't call method "execute" without a package or object 
reference at ../clobtest.pl line 35.

(34. radek je radek s 
"$sth=$dbh->prepare("insert into blb1 values (?,?)");")

zdravi
	Arnost Valicek
-- 
Arnost Valicek <xvalicek na fi.muni.cz>


Další informace o konferenci Test