I'm trying to create this function:
CREATE FUNCTION remove_non_alphanum (prm_strInput varchar(3000))
RETURNS VARCHAR(3000)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE v_char VARCHAR(1);
DECLARE v_parseStr VARCHAR(3000) DEFAULT '';
WHILE (i <= LENGTH(prm_strInput) ) DO
SET v_char = SUBSTR(prm_strInput,i,1);
IF v_char REGEXP '^[A-Za-z0-9]$' THEN
SET v_parseStr = CONCAT(v_parseStr,v_char);
END IF;
SET i = i + 1;
END WHILE;
RETURN trim(v_parseStr);
END
But MySQL says:
13:52:45 [CREATE - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] 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 '' at line 5
What could I being wrong? The syntax looks correct to me.
You have to change the delimiter so you can use
;
inside the function:Update: In MySQL, the default delimiter is
;
. So, when you type your original code, MySQL thinks the first command ends where the first;
is found (at line 5, as the error message states), thus you get an error because this is not valid SQL:If you change the delimiter to anything else, MySQL identifies the complete command (from
CREATE FUNCTION
toEND
and runs it. Voilá! Your function is created. Finally, when you run your function, the code runs just fine because the function body is composed of several statements using the default delimiter.I found the answer here.
I turns out it was some weird DB Visualizer issue.
Enclosing the complete block in "--/" and "/" worked for me:
An alternative to
is:
More info: http://www.dbvis.com/doc/main/doc/ug/sqlCommander/sqlCommander.html#mozTocId437790