簡體   English   中英

如何對視圖使用存儲過程進行動態查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM