gpt4 book ai didi

mysql - 无法在 CREATE FUNCTION 中使用 declare 语句

转载 作者:行者123 更新时间:2023-11-29 02:56:44 26 4
gpt4 key购买 nike

我正在尝试在 CREATE FUNCTION 语句中使用 declare [variable] 语句。

我的代码是

/* DELIMITER // */

CREATE FUNCTION hello_world()
RETURNS TEXT
DECLARE bae int;
BEGIN
RETURN 'Hello World';
END;
//
/* DELIMITER ; */

代码在不使用 declare 的情况下运行良好,但使用 declare 时出现错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use...

如何在函数或存储过程中实际使用 declare 语句?

最佳答案

不要注释掉分隔符,并且声明需要紧跟在 begin 语句之后:

DELIMITER // 
CREATE FUNCTION hello_world() RETURNS TEXT
BEGIN
DECLARE bae INT;
RETURN 'Hello World';
END
//
DELIMITER; --restore delimiter

SELECT hello_world() --Hello World

编辑:

我从未使用过 sql fiddle。我已经玩了 5 分钟了,我讨厌它:)

显然,sql fiddle 有不同的语法规则。此处适用的是它们不支持定界符,但确实将 // 内置为“已知定界符”( Execute triggers stored procedures on SqlFiddle. Mysql )

所以,这是可行的:

CREATE function hello_world() returns text
BEGIN
declare bae int;
return "hello world";
END//

select hello_world()

http://sqlfiddle.com/#!2/8e5da4/1

所以,有一个工作 fiddle 。我手写了这个函数,它起作用了。但是,我从字面上将其复制粘贴到一个新的 sqlfiddle 中,然后我得到了

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 3

所以这种不一致的行为非常烦人。

关于mysql - 无法在 CREATE FUNCTION 中使用 declare 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com