【问题标题】:Stored procedure in mysql doesnt insert fetched and iterated values into tablemysql中的存储过程不会将获取和迭代的值插入到表中
【发布时间】:2013-10-22 20:52:39
【问题描述】:

这是我尝试过的。我无法将我的值插入表中。谁能帮帮我..

DELIMITER $$
USE `SampleDB`$$

DROP PROCEDURE IF EXISTS `Sample`$$

CREATE PROCEDURE `SampleDB`.`Sample`()
BEGIN
    #declare variable
    DECLARE tenantName VARCHAR(255);
    DECLARE tenantAddress VARCHAR(255);
    DECLARE done INT DEFAULT FALSE;
    DECLARE cur1 CURSOR FOR SELECT tenant_name,tenant_address FROM tenant;

    #open cursor
    OPEN cur1;
        #starts the loop
        the_loop: LOOP
            #get the values of each column into our variables
            FETCH cur1 INTO tenantName,tenantAddress;
            IF done THEN
            LEAVE the_loop;
            END IF;     
            #Insert it
            INSERT INTO tenant(tenant_name,tenant_address)
            VALUES (tenantName,tenantAddress);  
        END LOOP the_loop;

    CLOSE cur1;
END$$
DELIMITER ;

【问题讨论】:

标签: mysql stored-procedures


【解决方案1】:

确实缺少13.6.7.2. DECLARE ... HANDLER Syntax:

...
DECLARE cur1 CURSOR FOR SELECT tenant_name, tenant_address FROM tenant;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

#open cursor
...

但是你真的需要一个光标吗?使用这样的语句,可以避开游标:

INSERT INTO `tenant` (`tenant_name`, `tenant_address`)
SELECT `tenant_name`, `tenant_address` FROM `tenant`;

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多