PEPPLER.ORG
Michael Peppler
Sybase Consulting
Menu
Home
Sybase on Linux
Install Guide for Sybase on Linux
General Sybase Resources
General Perl Resources
Freeware
Sybperl
Sybase::Simple
DBD::Sybase
BCP Tool
Bug Tracker
Mailing List Archive
Downloads Directory
FAQs
Sybase on Linux FAQ
Sybperl FAQ
Personal
Michael Peppler's resume

sybperl-l Archive

Up    Prev    Next    

From: Emmanuel Quevillon <tuco at pasteur dot fr>
Subject: Re: Error thrown when trying to update a 'text' field
Date: Sep 1 2009 6:23AM

Hi Mickael,

As you adviced me i used raw SQL with $dbh->do() method and it did the  
trick.
Thanks for you help.

Regards

Emmanuel



Le 28 août 2009 à 20:36, Michael Peppler  a  
écrit :

> Hi,
>
> Sybase definitely treats a TEXT column as a "blob", and as the  
> DBD::Sybase docs mention it is not possible to pass such a column as  
> a placeholder.
>
> You must pass the values directly as raw SQL text, or use the text/ 
> image API provided by DBD::Sybase.
>
> Michael
>
>
> On Aug 28, 2009, at 4:16 PM, Emmanuel Quevillon wrote:
>
>> Hi,
>>
>> I didn't know to which mailing list I should send this message, so
>> I'm cc'ing to DBIx::Class as it uses this framework. However, the DB
>> is Sybase 12.5.3.
>>
>> The thing is that I want to do a large update of a certain amount of
>> rows. What I've to do is replace some kind of a date string into a
>> text field. If I send the query generated by DBIx::Class by hand to
>> the server, it works perfectly and to the update.
>> However, if I let the perl code (DBIC) doing it itself, I get the
>> following error thrown by Sybase:
>>
>> DBI Exception: DBD::Sybase::db prepare failed: Server message
>> number=2782 severity=16 state=1 line=1 server=CRBIPTEST
>> procedure=DBD2 text=An untyped variable in the PREPARE statement
>> 'DBD2' is being resolved to a TEXT or IMAGE type. This is illegal in
>> a dynamic PREPARE statement.
>>
>> [for Statement "UPDATE produit SET HISTORIQUE = ? WHERE (
>> CODE_PRODUIT_CRBIP = ? )"] at
>> /usr/local/lib/perl5/site_perl/5.8.8/DBIx/Class/Schema.pm line 1025
>>
>>
>> Here is the request generated:
>>
>> UPDATE produit SET HISTORIQUE = ? WHERE ( CODE_PRODUIT_CRBIP = ? ):
>> '1993 R. Landen
>> 1993 - 1998 M.M. Lecadet IP
>> 1998 - 2001 B. Papierok IP
>> 2001 - 2008 J.F. Charles IP
>> 2009 C. Bizet IP', 'CRBIPbIEBC1048'
>>
>> So I though the problem could come from the fact that the text field
>> contains some carriage return and causes Sybase not to understand
>> correctly the request?
>> On colleague also told me it could come from the fact that DBI
>> treats text field as BLOB????? Never head of this.
>>
>> If someone could light my lantern.....
>> Thanks in advance
>>
>> Regards
>>
>> -- 
>> -------------------------
>> Emmanuel Quevillon
>> Biological Software and Databases Group
>> Institut Pasteur
>> +33 1 44 38 95 98
>> tuco at_ pasteur dot fr
>> -------------------------
>>
>
> Michael Peppler
> Sybase on Linux FAQ: http://www.peppler.org/FAQ/linux.html
>
> "A successful [software] tool is one that was used to do something  
> undreamed of by its author." -- S. C. Johnson
>
>
>
>
>