[英]How to make dinamic query for view use stored procedure?
你願意幫我創建一個這樣的存儲過程嗎?
我有這樣的查詢:
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 構建存儲過程
您可以使用以下代碼來獲取聯合查詢。
begin
select group_concat(concat('select * from db_',yr,'.tablename') separator '\nunion all\n') into @unionqry
from (select `Year` as yr from db_name.tablename group by `Year`) t;
prepare stmt from @unionqry;
execute stmt;
deallocate prepare stmt;
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.