我已经编写了一个函数,但是如果有人可以帮助我,它会给我第二行错误(创建语句),我真的很感激:

CREATE FUNCTION GetPrefix (phone_num VARCHAR(30)) RETURNS varchar(30)

deterministic
BEGIN

DECLARE x  INT;
DECLARE prefix varchar(30);
SET x = 0;

for prefix in SELECT code
    FROM tab_len
while (length(phone_num)) > 0
    do
    if prefix<>left(phone_num, length(phone_num)-x)
        then  set x=x+1  ;
    else return 1 ;
END while ;

END $$;


我收到此错误:


  您的SQL语法有误。检查手册
  对应于您的MySQL服务器版本以使用正确的语法
  在SELECT代码中的'for前缀附近
                    FROM tab_len while(length(phone_n'在第9行

最佳答案

DELIMITER $$
DROP FUNCTION IF EXISTS GetPrefix $$
CREATE FUNCTION GetPrefix
(
phone_num VARCHAR(30)
)
RETURNS varchar(30)

BEGIN

DECLARE var_x  INT DEFAULT 0;
DECLARE var_prefix VARCHAR(100);
SET phone_num = IFNULL(phone_num,'');

-- your logic will go here.
return phone_num;


END$$
DELIMITER ;

SELECT GetPrefix('test');


这是在mysql中编写函数的正确语法。
查看差异。看看Here

关于mysql - 创建MySQL函数语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29774840/

10-13 08:53
查看更多