Can I define a CHAR having 4000 as dimension? As documentation is concerned, It's 
possible.
In a function like this

CREATE FUNCTION TRANSLATE_DICTIONARY_KEY(KEY CHAR(100), LANGUAGE FIXED(6,0), 
DEFAULT_WORD CHAR(4000)) RETURNS VARCHAR AS
VAR RES VARCHAR(4000);
TRY
SET RES = DEFAULT_WORD;
RETURN RES;
CATCH
IF $RC = 100 THEN RETURN 'ciao'
ELSE STOP($RC, $ERRMSG);
//

I receive the error: Syntax error or access violation;-2000 POS(128) Row too long.

Even if I define RES as CHAR(4000), I'll have the same error.



----- Original Message ----- 
From: "Anhaus, Thomas" <[EMAIL PROTECTED]>
To: "'Matteo Gattoni'" <[EMAIL PROTECTED]>
Sent: Tuesday, June 15, 2004 1:04 PM
Subject: AW: Varchar definition in functions


Hi Matteo,
do you have an example which returns error -3999. Actually 
char(20) should do in all cases.

Best Regards,
Thomas

-----Urspr�ngliche Nachricht-----
Von: Matteo Gattoni [mailto:[EMAIL PROTECTED] 
Gesendet: Dienstag, 15. Juni 2004 12:21
An: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Betreff: Re: Varchar definition in functions


As you see in my first mail, I have yet done it but it seems to not work
with functions more complex.
The error that I receive is
    General error;-3999 POS(1) Invalid parameter.

----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: "Matteo Gattoni" <[EMAIL PROTECTED]>
Sent: Tuesday, June 15, 2004 4:32 PM
Subject: Re: Varchar definition in functions


> You must use char(20) in place of varchar(20) in function parameters
>
>
>
> Matteo Gattoni wrote:
> > Hello,
> >    I'm using MaxDb version 7.5.01.00 and defining a function that has a
parameter VARCHAR(20) type.
> > When I create the function (in INTERNAL mode) as follow,
> >
> >     CREATE FUNCTION TEST (IN_OPERATOR VARCHAR(20)) RETURNS NUMBER AS
> >     BEGIN
> >     SELECT * FROM OPERATOR WHERE OPERATOR.K_OPERATOR = :IN_OPERATOR;
> >     RETURN 1;
> >     END;
> >
> > I receive the message:
> >     General error;-5016 POS(42) Missing delimiter: ).
> >
> > Deleting the dimension of the parameter IN_OPERATOR in the definition,
as follow
> >
> >     CREATE FUNCTION TEST (IN_OPERATOR VARCHAR) RETURNS NUMBER AS
> >     BEGIN
> >     SELECT * FROM OPERATOR WHERE OPERATOR.K_OPERATOR = :IN_OPERATOR;
> >     RETURN 1;
> >     END;
> >
> > I have the error:
> >     General error;-9000 POS(123) System error: Not yet
implemented:parameter of unknown size.
> > It seems that the parameter IN_OPERATOR needs to have a dimension
specified, but the syntax don't let me do that.
> > The only way to use this function is to define the parameter IN_OPERATOR
as CHAR(20), as follow.
> >
> >     CREATE FUNCTION TEST (IN_OPERATOR CHAR(20)) RETURNS NUMBER AS
> >     BEGIN
> >     SELECT * FROM PSF.OPERATOR WHERE OPERATOR.K_OPERATOR = :IN_OPERATOR;
> >     RETURN 1;
> >     END;
> >
> > Though this solution ,sometimes, (with functions more complex) seems to
not work, giving errors like
> >     General error;-3999 POS(1) Invalid parameter
> >
> > Thanks in advance for your responses.
> > Bye,
> >
> > *************************************
> > Matteo Gattoni
> > ICTeam S.p.A.
> > Via Azzano S.Paolo, 139
> > 24050 GRASSOBBIO (BG)
> > Tel.: +39 035 4232156
> > Fax: +39 035 4522034
> > e-mail: [EMAIL PROTECTED]
> > *************************************
>
>


-- 
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to