Si, hai ragione. Quando la creo in locale (sostituendo però il delimiter con \), funziona. Invece in remoto mi da dei problemi...

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(
s1 VARCHAR( 255 ) ,
s2 VARCHAR( 255 )
) RETURNS int( 11 ) D

con questo codice:

codice:
CREATE FUNCTION `levenshtein` (
s1 VARCHAR( 255 ) ,
s2 VARCHAR( 255 )
) RETURNS int( 11 ) DETERMINISTIC BEGIN DECLARE s1_len INT;

DECLARE s2_len INT;

DECLARE i INT;

DECLARE j INT;

DECLARE c INT;

DECLARE c_temp INT;

DECLARE cost INT;

DECLARE s1_char CHAR;

DECLARE cv0, cv1 VARBINARY( 256 ) ;

SET s1_len = CHAR_LENGTH( s1 ) ,
s2_len = CHAR_LENGTH( s2 ) ,
cv1 = 0x00,
j =1,
i =1,
c =0;

IF s1 = s2 THEN RETURN 0 ;

ELSEIF s1_len =0 THEN RETURN s2_len;

ELSEIF s2_len =0 THEN RETURN s1_len;

ELSE WHILE j <= s2_len DO SET cv1 = CONCAT( cv1, UNHEX( HEX( j ) ) ) ,
j = j +1;

END WHILE;

WHILE i <= s1_len DO SET s1_char = SUBSTRING( s1, i, 1 ) ,
c = i,
cv0 = UNHEX( HEX( i ) ) ,
j =1;

WHILE j <= s2_len DO SET c = c +1;

IF s1_char = SUBSTRING( s2, j, 1 ) THEN SET cost =0;

ELSE SET cost =1;

END IF ;

SET c_temp = CONV( HEX( SUBSTRING( cv1, j, 1 ) ) , 16, 10 ) + cost;

IF c > c_temp THEN SET c = c_temp;

END IF ;

SET ce_temp = CONV( HEX( SUBSTRING( cv1, j +1, 1 ) ) , 16, 10 ) +1;

IF c > c_temp THEN SET c = c_temp;

END IF ;

SET cv0 = CONCAT( cv0, UNHEX( HEX( c ) ) ) ,
j = j +1;

END WHILE;

SET cv1 = cv0,
i = i +1;

END WHILE;

END IF ;

RETURN c;

END
...non so se ho ancora dei problemi di delimitatori...non riesco a capire.