在while循环中递增变量时发生Mariadb SQL语法错误



我有一个MariaDB数据库,其中存储了一个站点列表及其年表(例如公元前1至5世纪(。我需要导出一个在公元1世纪、公元2世纪等活动的所有站点的表。我想避免导出单个世纪的单个表,然后将它们组合起来,因为我经常添加新站点,我正在使用这个导出的.csv在R.中执行一些操作

我想创建一个WHILE循环来生成一个表,但我得到了这个错误:

[42000][1064](conn=4(您的SQL语法有错误;查看与MariaDB服务器版本对应的手册,了解在"SET Counter=Counter+1"附近使用的正确语法;[42000][1064]您的SQL语法有错误;查看与MariaDB服务器版本对应的手册,了解在"SET Counter=Counter+1"附近使用的正确语法;结束WHILE;第17行结束

我使用的代码是:

CREATE PROCEDURE while_centuries()
BEGIN
DECLARE Counter INT DEFAULT -1;
WHILE Counter <= 11 DO
SELECT site_list.site_code, site_name, st.type_name, cl.culture_type, startcentury, endcentury, site_altitude,
geo_name, x,y, regions.region_name, available_data, bot, zoo, poll
-- BOT ZOO POLL are links to the UUIDs of the rows of plant_remains, pollen_remains and faunal_remains table.
FROM site_list
INNER JOIN regions ON site_list.region_id = regions.region_id
INNER JOIN geo_type gt on site_list.geo_feature = gt.geo_id
INNER JOIN site_type st on site_list.site_type = st.type_id
INNER JOIN culture_list cl on site_list.culture = cl.id_culture
WHERE startcentury <=Counter AND endcentury>=Counter
SET Counter = Counter + 1;
END WHILE;

其中11是我所需要的最后一个世纪,-1是我所需的第一个世纪。

很抱歉我编程不流利。有人能帮我吗?

提前谢谢。

我认为endcentury>=Counter后面需要一个分号以结束SELECT语句。

它不是SET Counter = Counter + 1语句实际导致错误。

最新更新