Nils Drews wrote !
>
> Hello group,
>
> i got a strange problem while implementing a function, which
> reverses a
> string. It is very simple, but only works for strings (VARCHAR) of a
> maximum length of 38 chars. If a String is longer than that
> it produces
> the following error:
>
> Error: com.sap.dbtech.jdbc.exceptions.DatabaseException:
> [-2010] (at 8):
> Assignment impossible, char value too long, SQL State: 22001, Error
> Code: -2010
>
>
> The function is:
>
> CREATE FUNCTION reverse(s VARCHAR) RETURNS VARCHAR AS
> VAR result VARCHAR(255); actualchar VARCHAR; indexRight INT;
>
> IF s is NULL THEN RETURN NULL;
>
> SET indexRight = LENGTH(s);
> SET result = '';
>
> WHILE indexRight > 0 DO BEGIN
> SET actualChar = SUBSTR(s, indexRight, 1);
> SET indexRight = indexRight - 1;
> SET result = result & actualChar;
> END;
> RETURN result;
>
>
> So i tested with:
>
> SELECT inxmail_reverse('AAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCDDDDD') FROM
> BWTABLES
>
> if i add an E at the end of the string i get the error.
>
> What am i doing wrong and where is that CHAR column the error
> message is
> complaining about ???
>
> Thx in advance,
>
> Nils Drews
This is a bug caused by the fact that the parameter s has an unknown
size at compilation time.
As a workaround please substitute 's VARCHAR' by 's CHAR(255)'. This
actually does not change anything for you because you have a limit of
255 characters inside your code anyhow.
Best Regards,
Thomas
--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]