问题
I am using MySQL v5.1.36 and I am trying to create a stored function using this code.
DELIMITER //
CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
BEGIN
DECLARE y INT;
SELECT id INTO y
FROM `modx`.coverage_state
WHERE `coverage_state`.name = x;
RETURN y;
END//
When entered into the MySQL Console I get this response.
mysql> DELIMITER //
mysql> CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
-> BEGIN
-> DECLARE y INT;
ERROR 1064 (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 3
mysql> SELECT id INTO y
-> FROM `modx`.coverage_state
-> WHERE `coverage_state`.name = x;
ERROR 1327 (42000): Undeclared variable: y
mysql> RETURN y;
ERROR 1064 (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 'RETUR
N y' at line 1
mysql> END//
From what I can find online my syntax is correct. What am I doing wrong?
回答1:
When creating a function/procedure from mysql console, the first command should be DELIMITER //
. Otherwise, it uses default delimiter (;
),
回答2:
I solved the my issues by adding `` around my variables. Here is the code I ended up with.
DELIMITER //
CREATE FUNCTION `modx`.getSTID (x VARCHAR(255)) RETURNS INT DETERMINISTIC
BEGIN
DECLARE `y` INT;
SELECT id INTO `y`
FROM `modx`.coverage_state
WHERE `coverage_state`.name = `x`;
RETURN `y`;
END//
DELIMITER ;
来源:https://stackoverflow.com/questions/3406822/errors-with-mysql-stored-function-creation-error-1064-1327