【问题标题】:Dynamic Views Alternative in mySQLmySQL 中的动态视图替代方案
【发布时间】:2012-03-14 13:05:27
【问题描述】:

我正在尝试在 mySQL 中创建一个视图,当用户输入特定值 (woeid) 时会创建或更新该视图。我尝试使用下面的存储过程来做到这一点:

DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `sp_getChildren`(
    IN woeid INTEGER(15)
)
BEGIN
    CREATE  OR REPLACE VIEW `test`.`children` 
    AS
    SELECT * 
    FROM geoplanet_places gp
    WHERE gp.parent_id = woeid;
END

以上内容,或者我读过的内容,在当前版本的 mySQL 中是不可能的,因为存储例程中的视图不能引用例程参数或局部变量。我的问题是这是什么原因,以及是否有任何有效的替代方案。我真的不想创建一个新表并让程序更新该表。

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: mysql database dynamic views


    【解决方案1】:

    尝试使用prepared statements -

    CREATE PROCEDURE sp_getChildren(IN woeid INTEGER(15))
    BEGIN
      SET @sql = CONCAT('CREATE  OR REPLACE VIEW `test`.`children` AS SELECT * FROM geoplanet_places gp WHERE gp.parent_id = ', woeid);
      PREPARE stmt FROM @sql;
      EXECUTE stmt;
      DEALLOCATE PREPARE stmt;
    END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 2015-11-29
      • 2011-03-21
      • 2014-02-24
      • 2023-03-24
      • 2016-10-14
      相关资源
      最近更新 更多