2012-04-30 37 views
2

私は類似のためにSOを検索しました。これと同様のポスティングを見つけました。フォローアップとは思った通りでしたが問題は残っています。MySQL 1329エラーNo Data - ゼロ行がフェッチされました

また、私はMySQLのマニュアルを覗いていますが、私はここで正しいと思われます。

DELIMITER $$ 

CREATE DEFINER=`perimUser`@`localhost` PROCEDURE `assignLOBId`() 
BEGIN 
    declare id, done INT default 0; 
    declare name VarChar(45); 

    declare lobCursor Cursor for Select idLineOfBusiness as id, name from LineOfBusiness; 
    declare continue handler for not found set done = 1; 

    OPEN lobCursor; 

    my_loop: LOOP 
     FETCH lobCursor INTO id, name; 

      IF done = 1 THEN 
       CLOSE lobCursor; 
       LEAVE my_loop; 
      END IF; 

      insert into test values (id, name); 
      UPDATE medium set idLOB = id where LOB = name; 
      UPDATE low set idLOB = id where LOB = name; 

    End LOOP my_loop; 

END 

私は「カーソルの使用mはクエリを実行しており、それは13行を返すん。表中、低の各600行に関するデータに満ちている。のLOB列のLOBの一致値

ここでの目標は、データを中規模および低レベルで正規化するためにこのパターンを何度も使用することです。それ以外の場合は、I

+0

はあなたをしましたこれを試して? http://stackoverflow.com/questions/3463283/how-to-get-rid-of-error-1329-no-data-zero-rows-fetched-selected-or-process – dfb

答えて

0

カーソルが期待どおりに機能しない理由がわからない(wとは言わない?hetherあなたtestテーブル)は、あなたが期待する結果が移入が、あなたの手順が)単に複数テーブルUPDATEを実施している(ので、おそらく完全に次のように置き換えることができます私には思われる。

UPDATE LineOfBusiness 
    LEFT JOIN medium ON LineOfBusiness.name = medium.LOB 
    LEFT JOIN low ON LineOfBusiness.name = low.LOB 
    SET medium.idLOB = LineOfBusiness.idLineOfBusiness 
    , low.idLOB = LineOfBusiness.idLineOfBusiness 
関連する問題