gpt4 book ai didi

mysql - 无法创建存储函数 - 语法错误?

转载 作者:搜寻专家 更新时间:2023-10-30 21:40:54 25 4
gpt4 key购买 nike

我遇到了以下问题。

我想创建一个存储函数,将 entity_id 转换为相应的 sku

代码如下:

CREATE FUNCTION `id2sku`(`entity_id_in` INT)
RETURNS VARCHAR
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE returnvalue varchar(50);

SELECT `sku` INTO returnvalue FROM catalog_product_entity WHERE entity_id = entity_id_in LIMIT 1;

return returnvalue;
END

现在我的问题是,如果我触发查询,我会收到以下消息:[窗口标题]错误

SQL Error (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 'LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT' at line 3

我使用的数据库是 MySQL 5.0.51a

提前感谢您的想法。

最佳答案

MySQL 默认使用 ; 作为分隔符,所以当它在第 9 行遇到 ; 时:

 DECLARE returnvalue varchar(50);

MySQL 认为命令结束 - 它正在尝试执行:

CREATE FUNCTION `id2sku`(`entity_id_in` INT)
RETURNS VARCHAR(50)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE returnvalue varchar(50);

这不是有效的 SQL。

设置一个新的分隔符:

 DELIMITER $$

CREATE FUNCTION `id2sku`(`entity_id_in` INT)
RETURNS VARCHAR(50)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE returnvalue varchar(50);

SELECT `sku` INTO returnvalue FROM catalog_product_entity WHERE entity_id = entity_id_in LIMIT 1;

return returnvalue;
END
$$

然后您可以将分隔符改回:

DELIMITER ;

关于mysql - 无法创建存储函数 - 语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345826/

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