Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: OCIBind and whitespace trimming
> Hi everyone. I've got a customer that is using some older code we
> wrote to update some tables (code based on OCI from 8.1.7). One
> particular table has a VARCHAR2 field and he wants to put the
> following text into it: 'this is my test '. Note the space at the
> end. Our little helper function uses OCIBindByPos when building the
> Update clause and this, it turns out, causes the trailing spaces to
> get stripped:
>
> "http://sales.esicom.com/sales/oracle/appdev.816/a76975/oci03typ.htm
>
> VARCHAR2:
> The value_sz parameter determines the length in the OCIBindByName() or
> OCIBindByPos() call. If the value_sz parameter is greater than zero,
> Oracle obtains the bind variable value by reading exactly that many
> bytes, starting at the buffer address in your program. Trailing blanks
> are stripped, and the resulting value is used in the SQL statement or
> PL/SQL block. "
>
> The customer doesn't want to have to build the update statement with
> actual data in it (and he shouldn't have to) but I've been unable to
> find a workaround besides that. I'm about as far from being an Oracle
> whiz as you can get and yet still use OCI so I'm really hoping someone
> out here might have a suggestion.
Sean,
I am a little confused. Basically, as it at least seems to me, you are stating the answer: value_sz must be adjusted. In your case, it must be 16. Use strlen('this is my test ') or any similar function to determine the size.
hth
Rene
-- Rene Nyffenegger http://www.adp-gmbh.chReceived on Tue Feb 17 2004 - 02:11:45 CST
![]() |
![]() |