2016-05-14 9 views
1

多くのトピックを調べてみましたが、私の構文に何が間違っているかを理解することはできませんでした。私はidがauto_incrementingである間に、別のテーブルに1つのテーブルとループインサートの別個の値を取ろうとしています。ここに私がこれまで持っているものがあり、私が間違っていることを理解できないようです。私は2つの手続きを書いています。彼らは両方とも "働く"が、 "しない"。カーソルループでauto_incrementを挿入して更新する方法

ありがとうございました!

基本的には、あるテーブルから別のテーブルに挿入しようとしていて、AUTO_INCREMENTを使用してbuild_idを生成しようとしています。

permits.build_type 

build_id  INT    PK 
build_desc VARCHAR(200) 

とコードは次のとおりです:私は移入するテーブルがある

DELIMITER // 

CREATE PROCEDURE building_list() 
BEGIN 
    DECLARE output VARCHAR(200); 
    DECLARE my_cursor CURSOR FOR 
     SELECT DISTINCT BUILDING_TYPE 
     FROM permits.edmonton_upto_10may2016_mostly_text; 

    OPEN my_cursor; 
    BEGIN 
    DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END; 
    LOOP 
     FETCH my_cursor INTO output; 
     INSERT INTO permits.build_type (build_desc) VALUES (output); 
     UPDATE permits.build_type SET build_id = LAST_INSERT_ID(); 
    END LOOP; 
    END; 
    CLOSE my_cursor; 
END// 
+0

こんにちは、ありがとうございました!あなたの答えを読むと、私はまったく困惑していました... – Erilyn

+0

助けてくれてうれしいです – e4c5

答えて

0

理由だけではなく、単純なINSERT SELECTを使わないのでしょうか?

INSERT INTO built_type(build_desc) 
SELECT DISTINCT BUILDING_TYPE 
    FROM permits.edmonton_upto_10may2016_mostly_text; 
+0

MySQLに、そして主にOracle PLSQLから新しいことを申し訳ありません。私はそれが必要であると理解していましたauto_incrementが実行されている間にループするか、またはselectを挿入すると自動インクリメントが挿入されますか?私はそれを何かと呼ぶ必要はないのですか? – Erilyn

+0

auto列にnullを入れると、次の自動インクリメント値に置き換えられます。 – e4c5

関連する問題