gpt4 book ai didi

mysql存储过程声明在执行时抛出错误

转载 作者:行者123 更新时间:2023-11-29 11:24:00 25 4
gpt4 key购买 nike

在尝试创建此存储过程时,我不断收到此错误。我正在尝试编写一个分割逗号分隔字符串的过程。类似于explode。我觉得我已经很接近了。

这是错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'DECLARE start_pos, end_pos INT; 附近使用的正确语法。 设置开始位置=1; SET end_pos = 位于第 6 行

我从 SQL Server 示例中复制了逻辑,并尽力将其转换为 MySql 语法。

这就是从开始到结束的整个过程。我希望训练有素的眼睛能够解释为什么我会收到错误。

DELIMITER $$

CREATE procedure split_string (in p_string_to_split VARCHAR(255),in p_delimiter CHAR(1) )
BEGIN
DROP TEMPORARY TABLE IF EXISTS split_channel_ids;
CREATE TEMPORARY TABLE split_channel_ids (p_channel_id int);

DECLARE start_pos, end_pos INT;
SET start_pos = 1;
SET end_pos = Locate(p_delimiter, p_string_to_split);
WHILE (start_pos < CHAR_LENGTH(p_string_to_split) + 1) DO
IF (end_pos = 0) THEN
SET end_pos = CHAR_LENGTH(p_string_to_split) + 1;
END IF;
--- INSERT split_channel_ids (p_channel_id)
--- VALUES(SUBSTRING(p_string_to_split, start_pos, end_pos - start_pos)) ;
SET start_pos = end_pos + 1;
SET end_pos = Locate(p_delimiter, p_string_to_split, start_pos);
END WHILE;
-- select * from imob_users;
select * from split_channel_ids;
END $$
DELIMITER ;

最佳答案

DECLARE 语句(在 MySQL 中)必须位于其封闭的 BEGIN...END block 的开头。

在 MS SQL 中,它们可以位于任何地方;但这很烦人,因为它们没有 block 作用域,它们有过程作用域,所以你不能在独立 block 中“重用”名称。

关于mysql存储过程声明在执行时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38515195/

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