【问题标题】:loop though results from information schema mysql遍历 information_schema mysql 的结果
【发布时间】:2014-08-14 19:19:41
【问题描述】:

我正在尝试查找列名称为 RecordID 的所有表,然后遍历这些表以查看 RecordID 是否 > 5000。

CREATE PROCEDURE check_IDs ()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE result varchar(50);
    DECLARE cur1 CURSOR for SELECT table_name FROM  INFORMATION_SCHEMA.COLUMNS 
      WHERE column_name = 'RecordID' ;   

  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    OPEN cur1;
    read_loop: LOOP
     FETCH cur1 INTO result;
     IF done THEN
        LEAVE read_loop;
     END IF;

      Select * from `result` where RecordID > 5000;
    END LOOP;
    close cur1;    
END;

它说找不到表格结果。

【问题讨论】:

    标签: mysql stored-procedures cursor


    【解决方案1】:

    一定是这样的

    PREPARE stmt FROM CONCAT('SELECT * FROM `', result, '`WHERE RecordID > 5000;)';
    EXECUTE stmt;
    DEALLOCATE stmt;
    

    而不是

    Select * from `result` where RecordID > 5000;
    

    SQL Syntax for Prepared Statements的例子(最后一个)

    您的语句将使用硬编码的表名result。您的数据库中似乎没有这样的表。

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 2012-06-05
      • 2015-10-05
      • 2010-11-19
      • 2016-06-10
      • 2010-12-17
      • 2012-02-05
      • 1970-01-01
      相关资源
      最近更新 更多