代码如下,为什么这样使用游标不行呢?我觉得没有语法错误啊,老是提示有错。----------------------
DELIMITER $$DROP PROCEDURE IF EXISTS `combinetest`.`combine` $$
CREATE PROCEDURE `combinetest`.`combine` ()
BEGIN
DROP TABLE IF EXISTS combt;
CREATE TABLE combt
       (id INT(10) UNSIGNED NOT NULL,
        date_time_destroy DATETIME DEFAULT "0000-00-00 00:00:00",
        attr_orig_ipv4_dst INT(10) UNSIGNED NOT NULL,
        attr_orig_port_dst SMALLINT(5) UNSIGNED NOT NULL);
DECLARE ptname CURSOR
FOR
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
   WHERE table_schema='combinetest' AND table_name LIKE 'ct_ipv4_log_2013_08_17_%';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
SET no_more_departments=0;
OPEN tname;
REPEAT
    FETCH ptname INTO @tname;
    INSERT INTO combt SELECT id,date_time_destroy,attr_orig_ipv4_dst,attr_orig_port_dst FROM @tname;
UNTIL no_more_departments
END REPEAT;
CLOSE ptname;END $$DELIMITER ;

解决方案 »

  1.   

    错误信息如下:Script line: 4 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE ptname CURSOR
    FOR
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES
      ' at line 9
      

  2.   

    DELIMITER $$DROP PROCEDURE IF EXISTS `combinetest`.`combine` $$
    CREATE PROCEDURE `test`.`combine` ()
    BEGIN
    DECLARE ptname CURSOR
    FOR
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES
       WHERE table_schema='combinetest' AND table_name LIKE 'ct_ipv4_log_2013_08_17_%';DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
    DROP TABLE IF EXISTS combt;
    CREATE TABLE combt
           (id INT(10) UNSIGNED NOT NULL,
            date_time_destroy DATETIME DEFAULT "0000-00-00 00:00:00",
            attr_orig_ipv4_dst INT(10) UNSIGNED NOT NULL,
            attr_orig_port_dst SMALLINT(5) UNSIGNED NOT NULL);
    SET no_more_departments=0;OPEN tname;
    REPEAT
        FETCH ptname INTO @tname;
        INSERT INTO combt SELECT id,date_time_destroy,attr_orig_ipv4_dst,attr_orig_port_dst FROM @tname;
    UNTIL no_more_departments
    END REPEAT;
    CLOSE ptname;END $$DELIMITER ;
      

  3.   

    谢谢,交换了位置后这个问题解决了(为什么?),但是又有了新的错误。
    Script line: 4 Unknown system variable 'no_more_departments'
    换成了done也不行,@-@晕了,求大神指点