0

我试过了,但我不知道该怎么做。我想使用存储过程将记录从一个表迁移到另一个表。我从一个简单的程序开始(不确定它是对还是错)根据某些条件打印记录。这是我尝试过的代码:

CREATE PROCEDURE curdemo()
BEGIN
 DECLARE done INT DEFAULT FALSE;
  DECLARE a VARCHARCHAR(16);
  DECLARE cur1 CURSOR FOR SELECT user_name FROM discovery_configuration;
   OPEN cur1;
  REPEAT 
    FETCH cur1 INTO a;
     IF a!=' ' THEN 
        select a;
    END IF;
  END REPEAT;
   CLOSE cur1;
END;

如果 user_name 列为空,我需要一个存储过程将这些记录迁移到另一个表。谁能指导我?

4

3 回答 3

2

为什么它必须是一个存储过程?

您可以在一个查询中复制记录,然后在另一个查询中删除它们。

复制到另一个 user_name 为空的表:

INSERT INTO other_table (id, user_name, other)
SELECT (id, user_name, other)
FROM discovery_configuration
WHERE user_name IS NULL OR TRIM(user_name) = '';

然后,复制这些记录后,从原始表中删除:

DELETE FROM discovery_configuration WHERE id IN (SELECT id FROM other_table);
于 2012-11-01T20:40:28.713 回答
1

您是插入所有列还是仅插入用户名?如果您将所有列插入到另一个表中,您应该将所有列放入游标中,然后插入表中.. 并留下这个..根据上面提供的信息,我知道您想迁移数据如果用户名列为空,则从一个表到另一个表...对吗?那么你有一个简单的方法来做到这一点。

INSERT INTO A (COUMNS DETAILS) 从 B 中选择列,其中 B.USERNAME = ' ';

试试这个,让我知道..!!

——拉杰什·乌德姆

于 2013-01-26T06:09:04.383 回答
0

怎么样:

将 userName 插入 newTable 从 discovery_configuration 中选择 userName where cur1 != ' '

于 2012-11-01T20:44:06.717 回答