【发布时间】:2019-12-19 03:20:44
【问题描述】:
你愿意帮我创建一个这样的存储过程吗?
我有这样的查询:
select * from db_2014.tablename
union
select * from db_2015.tablename
union
select * from db_2016.tablename
但是数据库名称(年份名称)应该从一个表中获取,该表已经存储了“年份”字段。 数据库名称为“年份”的表:
select Year from db_Years.tablename;
我被我的存储过程困住了:
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
SET @isunion = " union ";
SET @queryGetYears = "select Year from db_name.tablename group by Year order by Year asc";
/*LOOPING RESULT OF @queryGetYears*/
SET @queryFetchDBByYear = CONCAT("select * from db_","-getFieldYear-",".tablename",@isunion);
/*END LOOPING*/
/*END SHOWING THE RESULT OF @queryFetchDBByYear*/
PREPARE stmt from @queryGetYears;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
是否可以使用存储过程来实现这一点? 感谢您的关注。
注意:使用 Navicat 构建存储过程
【问题讨论】:
标签: mysql sql stored-procedures mariadb