[英]mysql syntax error in creating function
DROP FUNCTION IF EXISTS bramkiStracone;
CREATE FUNCTION bramkiStracone(idDruzyny INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE bramek INT;
DECLARE tmp1 INT;
DECLARE tmp2 INT;
SELECT DISTINCT COALESCE(SUM( b.bramki ), 0) INTO tmp1
FROM LigaBramki b
INNER JOIN LigaZawodnicy z ON b.idZawodnika = z.idZawodnika
INNER JOIN LigaDruzyny d ON z.idDruzyny = d.idDruzyny
INNER JOIN LigaMecze m ON b.idMeczu = m.idMeczu
WHERE m.idDruzyny2 = idDruzyny
AND z.idDruzyny != idDruzyny
AND d.idDruzyny != idDruzyny
AND m.rozegrany = '1';
SELECT DISTINCT COALESCE(SUM( b.bramki ), 0) INTO tmp2
FROM LigaBramki b
INNER JOIN LigaZawodnicy z ON b.idZawodnika = z.idZawodnika
INNER JOIN LigaDruzyny d ON z.idDruzyny = d.idDruzyny
INNER JOIN LigaMecze m ON b.idMeczu = m.idMeczu
WHERE m.idDruzyny1 = idDruzyny
AND z.idDruzyny != idDruzyny
AND d.idDruzyny != idDruzyny
AND m.rozegrany = '1';
SET bramek = tmp1 + tmp2;
RETURN bramek;
END
I have error near DECLARE bramek INT;
我在
DECLARE bramek INT;
附近有错误DECLARE bramek INT;
but don't know what am i missing, 但不知道我错过了什么,
i tried to make it work by removing semi-colons but that didn't work either. 我试图通过删除分号来使其工作,但这也不起作用。
after i added delimiter i still have error 在我添加分隔符后,我仍然有错误
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 'DELIMITER |
CREATE FUNCTION bramkiStracone(idDruzyny INT)
RETURNS int(11)
DET' at line 1
dont forget to change the default DELIMITER
so the query won't terminate at DECLARE bramek INT;
别忘了更改默认的
DELIMITER
这样查询就不会在DECLARE bramek INT;
处终止DECLARE bramek INT;
DROP FUNCTION IF EXISTS bramkiStracone;
DELIMITER $$
CREATE FUNCTION bramkiStracone(idDruzyny INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE bramek INT;
DECLARE tmp1 INT;
DECLARE tmp2 INT;
SELECT DISTINCT COALESCE(SUM( b.bramki ), 0) INTO tmp1
FROM LigaBramki b
INNER JOIN LigaZawodnicy z ON b.idZawodnika = z.idZawodnika
INNER JOIN LigaDruzyny d ON z.idDruzyny = d.idDruzyny
INNER JOIN LigaMecze m ON b.idMeczu = m.idMeczu
WHERE m.idDruzyny2 = idDruzyny
AND z.idDruzyny != idDruzyny
AND d.idDruzyny != idDruzyny
AND m.rozegrany = '1';
SELECT DISTINCT COALESCE(SUM( b.bramki ), 0) INTO tmp2
FROM LigaBramki b
INNER JOIN LigaZawodnicy z ON b.idZawodnika = z.idZawodnika
INNER JOIN LigaDruzyny d ON z.idDruzyny = d.idDruzyny
INNER JOIN LigaMecze m ON b.idMeczu = m.idMeczu
WHERE m.idDruzyny1 = idDruzyny
AND z.idDruzyny != idDruzyny
AND d.idDruzyny != idDruzyny
AND m.rozegrany = '1';
SET bramek = tmp1 + tmp2;
RETURN bramek;
END $$
DELIMITER ;
You need to change your client's statement delimiter, so that it doesn't think each ;
您需要更改客户端的语句分隔符,以便它不会考虑每个分隔符
;
terminates the entire CREATE FUNCTION
statement. 终止整个
CREATE FUNCTION
语句。
In the MySQL command line client, one can use the delimiter
command: 在MySQL命令行客户端中,可以使用
delimiter
命令:
delimiter ;;
CREATE FUNCTION ... ;;
delimiter ;
Read the manual on Defining Stored Programs . 阅读定义存储程序的手册。
Make sure you set the delimiter to something other than semicolon before you declare your function: 在声明函数之前,请确保将分隔符设置为分号以外的分隔符:
DELIMITER |
CREATE FUNCTION bramkiStracone(idDruzyny INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE bramek INT;
...
END|
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.