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