mysql 查詢記錄並插入另一張表

 從 bd_house 查詢 houseId, houseName,   插入 bd_house_customer

DROP PROCEDURE IF EXISTS insert_extra_column_test;
DELIMITER //
CREATE PROCEDURE insert_extra_column_test()
BEGIN
    -- 聲明變量
	DECLARE newId LONG;
	DECLARE houseId LONG;
	DECLARE houseName VARCHAR ( 50 );
	DECLARE num integer;
    -- 聲明接收結果的遊標
	DECLARE
		house CURSOR FOR 
    -- 查詢記錄
        SELECT
		    id houseId,
	        NAME houseName
	    FROM bd_house 
	    WHERE
		id NOT IN ( SELECT house_id FROM bd_house_customer WHERE customer_id = 1111) 
	    ORDER BY  id;

    -- 打開遊標
	OPEN house;
    -- 匹配第一個遊標, 給變量賦值
	FETCH house INTO houseId, houseName;

    -- 這是固定遍歷 100 次, 遍歷全部可以用 while ( house is not null ) 判斷
	SET num = 100;
	WHILE ( num > 0 ) DO
			INSERT INTO `bd_house_customer` (
				`id`,
				`tenant_id`,
				`house_id`,
				`house`,
				`customer_id`,
				`customer`,
				`change_cause`,
				`relation_state`,
				`remarks`,
				`lease_type`,
				`belong_house_name`,
				`sign_date`,
				`lease_source`,
				`asset_use_type` 
			)
			VALUES
				(
					houseId,
					1111,
					houseId,
					houseName,
					1111,
					'張三',
					'2222',
					'currentTenant',
					1,
					'NewRent',
					houseName,
					NULL,
					'PC_terminal',
					'zzzz' 
				);
		SET num = num - 1;
        -- 匹配下一個遊標並賦值
		FETCH house INTO houseId, houseName;
	-- 結束循環, 關閉遊標	
	END WHILE;
	CLOSE house;

END //  
DELIMITER ; 

CALL insert_extra_column_test();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章