您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 22 行的 '' 附近使用的正确语法

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 22

我正在尝试在 MySQL 中创建一个函数:

这里是 SQL 代码:

DELIMITER //

CREATE FUNCTION hranisez_wp.calcBMI
(
    cPol     varchar,
    dPregled datetime,
    dRodjen  datetime,
    nVisina  double,
    nTezina  double;
)
returns varchar(4000)
begin
declare nBMI         double;
declare nStarost     double;
declare cBMIText     varchar(100);
declare nPothranjen  double;
declare nMrsav       double;
declare nNormalan    double;
declare nGojazan     double;
declare nPrekomjeran double;
declare nMinTezina   double;
declare nMaxTezina   double;
declare exit handler for sqlexception begin return(null);
 end
//

DELIMITER ;

而且我一直收到这个错误:

#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 ' dPregled datetime, dRodjen datetime, nVisina double, nTez' at line 3

请帮忙!

您的 SQL

中存在三个错误
  • 你在最后一个参数后有一个;
  • varchar需要长度参数
  • exit handler 没有end; 处理程序主体

所以试试这个:

DELIMITER //

CREATE FUNCTION hranisez_wp.calcBMI
(
    cPol     varchar(50),
    dPregled datetime,
    dRodjen  datetime,
    nVisina  double,
    nTezina  double
)
returns varchar(4000)
begin
declare nBMI         double;
declare nStarost     double;
declare cBMIText     varchar(100);
declare nPothranjen  double;
declare nMrsav       double;
declare nNormalan    double;
declare nGojazan     double;
declare nPrekomjeran double;
declare nMinTezina   double;
declare nMaxTezina   double;
declare exit handler for sqlexception begin return(null); end;
end
//

DELIMITER ;

nTezina double; 中删除 ; 同时删除 returns varchar(4000) 并再次检查

没有为 varchar 指定参数。 Varchar 数据类型需要参数,例如 cPol varchar(50), 这决定了列中的数据长度。