That only ocures when the nclob going in is not compatiable with the nclob field you are trying to stuff it into. one thing that wil give us a little more info is to connect with dbd_verbose=9 on the attributes and that will tell us you NSL setting. also get your DBA to check NLS_CHARACTERSET NLS_NCHAR_CHARACTERSET NLS_LANGUAGE NLS_TERRITORY These should all match up. Your DBI is rather old what is you version of DBD::Oracle you might want to upgrade both Cheers John
> Date: Fri, 3 Jun 2011 19:03:46 +0200 > From: y...@mailueberfall.de > To: dbi-users@perl.org > Subject: perl DBI Oracle NCLOB fetching > > Hello, > > my Perl script uses uses the DBI interface to connect to Oracle and runs > a select statement. But if one column is of type NCLOB it fails with: > > DBD::Oracle::st fetchrow_hashref failed: ORA-24806: LOB form mismatch > (DBD ERROR: OCILobRead) [for Statement "SELECT * FROM ttt WHERE ROWNUM=1"] > > I googled a lot and didn't found any solution for it. According to the > used versions of Perl, DBI and Oracle and the NLS settings it should work. > > Any idea how to get it working? > > Here are my used versions: > > DBI::VERSION = "1.41" > perl, v5.8.0 > > SQL> desc ttt > Name Null? Type > ------------------------------------------------------------------------ > T1 NCLOB > UMSISDN VARCHAR2(200 CHAR) > SPARTID NUMBER(2) > > bash-3.00$ env | grep -i nls > NLS_LANG=AMERICAN_AMERICA.UTF8 > NLSPATH=:/export/home/omni/locale/%L/%N.cat:/export/home/omni/locale/%L/%N > > Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production > > much thanks, > yoyo >