存储过程中的预处理语句不能刷新

时间:2014-07-29 20:46:35

标签: mysql sql stored-procedures

在此MySQL存储过程中使用动态创建的视图WITHIN循环。我遇到的问题是temp_controller_view视图的内容仅反映了视图的第一次创建(例如第一次循环)的结果,就好像语句CREATE OR REPLACE VIEW不是{\ n}正在阅读。

显然,我试图让每个循环更新视图,以便我可以处理动态视图的内容

MYSQL @@ VERSION> 61年1月5日

DROP procedure if exists SITETOEPRISE;

DELIMITER //

CREATE PROCEDURE SITETOEPRISE()
BEGIN
  DECLARE bDone INT;

  DECLARE sid int(11);    -- or approriate type
  DECLARE curr_site_db VARCHAR(10);
  DECLARE Var3 VARCHAR(50);

  DECLARE site_curs CURSOR FOR SELECT siteid FROM sites;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;

  OPEN site_curs;

  SET bDone = 0;

  site_loop : LOOP

  FETCH site_curs INTO sid;

  IF bDone THEN
    CLOSE site_curs;
    LEAVE site_loop;
  END IF;

  select sid as 'sid_in_loop';

  SET @dyn_sql = CONCAT('CREATE OR REPLACE VIEW `temp_controller_view` AS SELECT * from site',sid,'.controller;');
  select @dyn_sql;
  PREPARE stmt_dyn_view FROM @dyn_sql;
  EXECUTE stmt_dyn_view;
  DEALLOCATE PREPARE stmt_dyn_view;

  select * from temp_controller_view;

  drop view temp_controller_view;

  END LOOP;

END
//

DELIMITER ;

0 个答案:

没有答案