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]
