如何在MySQL shell中通过循环插入行(没有PHP)

时间:2014-11-22 04:20:33

标签: mysql

我想在phpmyadmin中执行一个循环,它在表中插入行。到目前为止,我有:

DELIMITER $$

DROP PROCEDURE IF EXISTS insert_my_rows()

CREATE PROCEDURE insert_my_rows()
BEGIN
DECLARE i INT DEFAULT 376;

WHILE i<405 DO
        INSERT INTO wp_term_relationships(object_id,term_taxonomy_id,term_order) VALUES (i,16,0);
        SET i=i+1;
END WHILE;
END $$

DELIMITER ;

CALL insert_my_rows()

有了这个,我收到一个错误:

#1064 - 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 'DELIMITER$$

DROP PROCEDURE IF EXISTS insert_my_rows()

CREATE PROCEDURE ins' at line 1 

3 个答案:

答案 0 :(得分:1)

DROP PROCEDURE语句的语法不正确!

更改

DROP PROCEDURE IF EXISTS insert_my_rows()

DROP PROCEDURE IF EXISTS insert_my_rows;

答案 1 :(得分:0)

您需要使用正确的分隔符结束语句。将END更改为END$$

答案 2 :(得分:0)

仅在制作语句块时才必须更改定界符,因此在过程定义期间必须如此。 DROP PROCEDURECALL语句也需要定界符。

DROP PROCEDURE IF EXISTS insert_my_rows;

DELIMITER $$

CREATE PROCEDURE insert_my_rows()
BEGIN
    DECLARE i INT DEFAULT 376;

    WHILE i<405 DO
        INSERT INTO wp_term_relationships(object_id,term_taxonomy_id,term_order) VALUES (i,16,0);
        SET i=i+1;
    END WHILE;
END $$

DELIMITER ;

CALL insert_my_rows();

DROP PROCEDURE IF EXISTS insert_my_rows;