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

すべての列を挿入していますか、それともユーザー名のみを挿入していますか? すべての列を別のテーブルに挿入する場合は、すべての列をカーソルに取得してからテーブルに挿入する必要があります..そしてこれをそのままにしておきます..上記の情報に基づいて、データを移行したいと思いますユーザー名列がnullの場合、あるテーブルから別のテーブルへ...そうですか?次に、それを行う簡単な方法があります。

INTO A (COUMNS DETAILS) SELECT COLUMNS FROM B WHERE B.USERNAME = ' ';

これを試して、私に知らせてください.. !!

-ラジェシュ・ウデム

于 2013-01-26T06:09:04.383 に答える