MySQL 函数中的语法错误,而 运行 代码

Syntax error in MySQL function while running code

我收到此错误:

#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 4

当我 运行 遵循 phpmyadmin 中的代码时,在第二个声明表达式旁边也出现此错误:

unrecognized statement type (near declare)

这些错误可能是什么原因造成的? (Phpmyadmin、版本等)

create function fnc_generate_url(title_in varchar(250))
    returns varchar(250)
        begin
            declare v_count int; 
            declare v_return varchar(250);
            declare cr_count cursor
            for
                select count(1) from tbl_page where page_title like concat('%',title_in,'%');

            open cr_count;
                fetch cr_count into v_count;
            close cr_count;

            if v_count = 0 then
                set v_return = replace(trim(title_in), ' ', '-');
            else
                set v_return =  concat(replace(trim(title_in), ' ', '-'),'-',v_count);
            end if;

            return v_return;
        end;

如果我们使用定界符,效果很好。

试试这个:

DELIMITER $$
create function fnc_generate_url(title_in varchar(250))
    returns varchar(250)
        begin
            declare v_count int; 
            declare v_return varchar(250);
            declare cr_count cursor
            for
                select count(1) from tbl_page where page_title like concat('%',title_in,'%');

            open cr_count;
                fetch cr_count into v_count;
            close cr_count;

            if v_count = 0 then
                set v_return = replace(trim(title_in), ' ', '-');
            else
                set v_return =  concat(replace(trim(title_in), ' ', '-'),'-',v_count);
            end if;

            return v_return;
        end;
$$
DELIMITER ;