you - Crear funciones en mysql no funciona-Error 1064
errorcode 1064 mysql (1)
Intenté este ejemplo a través de phpMyAdmin http://www.databasejournal.com/features/mysql/article.php/3569846/MySQL-Stored-Functions.htm
mysql> DELIMITER |
mysql>
CREATE FUNCTION WEIGHTED_AVERAGE (n1 INT, n2 INT, n3 INT, n4 INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE avg INT;
SET avg = (n1+n2+n3*2+n4*4)/8;
RETURN avg;
END|
Esto funcionó
DELIMITER |
La siguiente declaración dio:
Error
SQL query:
CREATE FUNCTION WEIGHTED_AVERAGE(
n1 INT,
n2 INT,
n3 INT,
n4 INT
) RETURNS INT DETERMINISTIC BEGIN DECLARE avg INT;
MySQL said: Documentation
#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 '''' at line 5
Como se menciona en el enlace:
As mentioned in the first stored procedures tutorial, we declare the "|" symbol as a delimiter, so that our function body can use ordinary ";" characters
Puede escribir muchos comandos en diferentes líneas consecutivas. Pero generalmente solo cuando '' ; ''se cumple, la instrucción de agujero se ejecuta.
Poner un carácter DELIMITER significa que MySQL debe esperar hasta que se cierre, no importa si usa '' ; ''o no y solo entonces para interpretar lo que está entre delimitadores.